ホームページ > バックエンド開発 > PHPチュートリアル > PHP destructorを正しく理解する方法_PHPチュートリアル

PHP destructorを正しく理解する方法_PHPチュートリアル

WBOY
リリース: 2016-07-15 13:33:16
オリジナル
1064 人が閲覧しました

初めての学習

クラス内で __construct という名前の関数を宣言すると、この関数はコンストラクターとして扱われ、オブジェクト インスタンスの作成時に実行されます。明確にするために、__ は他の関数と同様に 2 つのアンダースコアです。 、コンストラクターにはパラメーターまたはデフォルト値を含めることができます。オブジェクトを作成し、そのすべてのプロパティをステートメントに入れるクラスを定義することもできます。また、名前 __destruct 関数を定義することもできます。オブジェクトが破棄される前に、PHP はこの関数を呼び出します。これは PHP デストラクターと呼ばれます。

継承はクラスの強力な機能です。あるクラス (サブクラス/派生クラス) は、別のクラス (親クラス/基本クラス) の関数を継承できます。 3.1 と同様に、extends キーワードを使用してクラスを継承することもできます。

コンストラクターがどのように継承されるのか疑問に思われるかもしれませんが、他のメソッドとともに継承される場合、オブジェクトの作成時には実行されません。

この関数が必要な場合は、第 2 章で説明した :: 演算子を使用する必要があります。名前空間を指すようにします。parent は親クラスの名前空間を指します。parent::__construct を使用して親クラスのコンストラクターを呼び出すことができます。


一部のオブジェクト指向言語では、クラスの後にコンストラクターを指定します。 PHP の最初のいくつかのバージョンではこれが当てはまり、このメソッドは引き続き機能します。つまり、クラスに Animal という名前を付け、その中に名前付きコンストラクターを作成した場合、つまり Animal メソッドは、クラスに と の両方がある場合、このメソッドがコンストラクターになります。 __construt コンストラクターとクラスと同じ名前の関数を使用すると、PHP は __construct をコンストラクターとして扱います。これにより、以前の PHP バージョンを使用して作成されたクラスは引き続き使用できますが、新しいスクリプト (PHP5) では __construct.

PHP の新しい方法を使用する必要があります。コンストラクターを宣言すると、そのクラスの名前に関係なく、コンストラクターに一意の名前を付けることができます。この方法では、クラスの名前を変更するときに、コンストラクターの名前を変更する必要がありません

他のクラス メソッドと同様に、コンストラクターにアクセス メソッドを与えると、特定の範囲のオブジェクトのインスタンス化に影響を与えることができます。これにより、シングルトン パターンなどのいくつかの固定デザイン パターンを実装できます。 PHP のデストラクターは、コンストラクターとは対照的に、メモリからオブジェクトを破棄するために呼び出されます。デフォルトでは、PHP はオブジェクトのメモリに占有されているプロパティを解放するだけで、オブジェクトに関連付けられた任意のコードを実行してクリアできます。オブジェクトを使用した後、PHP がスクリプトがオブジェクトに関連付けられていないと判断すると、関数の名前空間内で、関数が返されるときにこれが行われます。オブジェクトを明示的に破棄したい場合は、通常、変数を NULL に割り当てるか、unset を呼び出します。オブジェクトはクラスからインスタンス化されます。Counter クラスはコンストラクターからインクリメントされ、PHP デストラクターでデクリメントされます。クラスがある場合は、new を使用してこのクラスのインスタンスを作成できます。設計図面、インスタンスはアセンブリ ラインに配置されるコンポーネントです。 New にはクラスの名前が必要で、コンストラクターのパラメーターが必要な場合は、 new.

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><</span><span> ?php   </span></span></li><li><span>class Counter { private static $</span><span class="attribute">count</span><span> = </span><span class="attribute-value">0</span><span>;   </span></li><li class="alt"><span>function __construct() { self::$count++; }   </span></li><li><span>function __destruct() { self::$count--; }   </span></li><li class="alt"><span>function getCount() { return self::$count; } }   </span></li><li><span>//建立第一个实例  </span></li><li class="alt"><span>$</span><span class="attribute">c</span><span> = </span><span class="attribute-value">new</span><span> Counter();  </span></li><li><span> //输出1   </span></li><li class="alt"><span>print($c-</span><span class="tag">></span><span>getCount() . "</span><span class="tag"><</span><span class="tag-name">br</span><span class="tag">></span><span>n");   </span></span></li>
<li><span>//建立第二个实例   </span></li>
<li class="alt">
<span>$</span><span class="attribute">c2</span><span> = </span><span class="attribute-value">new</span><span> Counter();   </span>
</li>
<li><span>//输出2   </span></li>
<li class="alt">
<span>print($c-</span><span class="tag">></span><span>getCount() . "</span><span class="tag"><</span><span class="tag-name">br</span><span class="tag">></span><span>n");   </span>
</li>
<li><span>//销毁实例   </span></li>
<li class="alt">
<span>$</span><span class="attribute">c2</span><span> = </span><span class="attribute-value">NULL</span><span>;   </span>
</li>
<li><span>//输出1  </span></li>
<li class="alt">
<span> print($c-</span><span class="tag">></span><span>getCount() . "</span><span class="tag"><</span><span class="tag-name">br</span><span class="tag">></span><span>n");   </span>
</li>
<li>
<span class="tag">?></span><span> </span>
</li>
</ol>
ログイン後にコピー

の後にパラメーターを入力する必要があります。

新しい PHP デストラクター インスタンスを作成すると、すべてのプロパティを保存するためのメモリが準備されます。各インスタンスには独自のプロパティ セットがありますが、メソッドはクラスのすべてのインスタンスで共有されます。

http://www.bkjia.com/PHPjc/446089.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/446089.html


技術記事

初めての学習 クラス内で __construct という名前の関数を宣言すると、この関数はコンストラクターとして扱われ、オブジェクトのインスタンスを作成するときに実行されます、_...

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート