私が最近取り組んだプロジェクトは PHP4 に基づいていました。私は PHP5 で
オブジェクト に直面することに慣れていますが、PHP4 に直面すると、必然的に多くの不快感を感じることになります。 、最も憂鬱なものです はい、デストラクターはサポートされていません
:この記事では、PHP の register_shutdown_function を使用して、PHP4 のクラスのデストラクターをシミュレートしますデストラクターを コンストラクターに登録します
:class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); $sample2 = new sample("HuiXinchen");このスクリプトを実行します
クロージング関数を登録するときに $this キーワードを使用したため、たとえ反対の変数が上書きされても、デストラクターは引き続き正しく呼び出されることになります。たとえば: class sample{
var $identified;
function sample($iden){
$this->identified = $iden;
register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数
}
function destructor(){
error_log("destructor executing, Iden is ". $this->identified);
unset($this);
}
}
$sample = new sample("laruence");
$sample = "laruence"; //覆盖对象变量
。 $sample は上書きされますが、このスクリプトを実行すると、次のコードでもデストラクターを正しく呼び出すことができることがわかります。
class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); unset($sample);
デストラクターは引き続き正しく呼び出すことができます。
以上がphp4 のシミュレートされたクラスのデストラクター例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。