ホームページ >php教程 >php手册 >セクション 4 -- コンストラクターとデストラクター

セクション 4 -- コンストラクターとデストラクター

WBOY
WBOYオリジナル
2016-06-13 12:37:01828ブラウズ

-------------------------------------------------- -----------------------------
| この記事は Haohappy によって読まれています<<コア PHP プログラミング>> 🎜 >| = クラスとオブジェクトの章のメモ
| = 翻訳は個人的な経験に基づいています。
| = 不必要なトラブルを避けるため、転載しないでください。
| 、すべての PHP 愛好家と一緒に進歩することを願っています
= PHP5 Research Center: http://blog.csdn.net/haohappy2004
---------------- --- --------------------------------------------------- --- ----------
*/

セクション 4 - コンストラクターとデストラクター

クラス内で関数を宣言する場合は、__construct という名前を付けます。関数はコンストラクターとして扱われ、オブジェクト インスタンスの作成時に実行されます。他の関数と同様に、コンストラクターにはパラメーターまたはデフォルト値を定義できます。

オブジェクトが破棄される前に PHP が呼び出す関数を定義することもできます。

継承は強力な機能です。 1 つのクラス (サブクラス/派生クラス) は別のクラス (親クラス/基本クラス) の機能を継承でき、派生クラスには基本クラスのすべてのプロパティとメソッドが含まれ、他のプロパティとメソッドを追加できます。 3.1.2 で示したように、extends キーワードを使用してクラスを継承することもできます。コンストラクターがどのように継承されるのか疑問に思うかもしれません。これらは他のメソッドとともに継承され、オブジェクトの作成時には実行されません。
この機能が必要な場合は、第 2 章で説明した :: 演算子を使用する必要があります。これにより、名前空間の親を指すことができます。

一部のオブジェクト指向言語では、以前のバージョンのコンストラクターにクラスの名前を付けます。つまり、クラスに Animal という名前を付け、その中に Animal という名前のメソッドを作成した場合、クラスに __construt コンストラクターと同じ名前の関数の両方がある場合、このメソッドはコンストラクターになります。このクラスでは、PHP は __construct をコンストラクターとして扱います。これにより、以前の PHP バージョンで作成されたクラスを引き続き使用できます。ただし、新しいスクリプト (PHP5) では、コンストラクターを宣言するための PHP の新しい方法が使用されます。これにより、クラスの名前を変更するときに、
他のクラス メソッドと同様に、コンストラクターにアクセス メソッドを与えることができます。このアクセス メソッドは、オブジェクトをインスタンス化する機能に影響を与えます。これにより、シングルトン パターンなどのいくつかの固定デザイン パターンの実装が可能になります。 >
コンストラクターとは対照的に、PHP はオブジェクトをメモリから破棄するために呼び出します。デフォルトでは、PHP はオブジェクトのプロパティによって占有されているメモリのみを解放し、オブジェクトに関連付けられたリソースを破棄します。オブジェクトの使用後にメモリをクリアします。

スクリプトがオブジェクトに関連付けられていないと PHP が判断すると、関数の名前空間内で、関数が返されるときにデストラクターが呼び出されます。これはスクリプトの最後で行われます。オブジェクトを明示的に破棄したい場合は、そのオブジェクトを指す変数に他の値を代入するか、

In を呼び出します。次の例では、クラスからインスタンス化されたオブジェクトの数をカウントします。Counter クラスはコンストラクターで始まり、値が増加し、デストラクターが減少します。

クラスを定義したら、new を使用してインスタンスを作成できます。このクラスの定義は設計図面であり、インスタンスはアセンブリ ラインに配置されるコンポーネントです。New にはクラスの名前が必要であり、コンストラクターにパラメーターが必要な場合は、そのクラスのインスタンスを入力する必要があります。





コードをコピー

コードは次のとおりです:

class Counter
{
private static $count = 0;

function __construct()
{ Self::$count ; getCount ()
{
return self::$count;
} }
}

//最初のインスタンスを作成します
$c = new Counter(); >
//出力 1
print($c->getCount() . "
n");

//2 番目のインスタンスを作成します
$c2 = new Counter();

//出力 2
print($c->getCount() . "

//インスタンスを破棄します
$c2 = NULL;

//出力 1
print($c->getCount() . "
?>


新しいインスタンスを作成すると、各インスタンスに独自のプロパティのセットが格納されますが、メソッドはクラスのすべてのインスタンスで共有されます。

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