ホームページ  >  記事  >  バックエンド開発  >  php4 のシミュレートされたクラスのデストラクター例の分析

php4 のシミュレートされたクラスのデストラクター例の分析

黄舟
黄舟オリジナル
2017-07-02 10:25:471027ブラウズ

私が最近取り組んだプロジェクトは 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。