ホームページ >php教程 >php手册 >PHP 5.0 オブジェクト モデルの構築と破壊の詳細な調査

PHP 5.0 オブジェクト モデルの構築と破壊の詳細な調査

WBOY
WBOYオリジナル
2016-06-21 09:07:341033ブラウズ

オブジェクト

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

オブジェクトが破棄される前に PHP が呼び出す __destruct という関数を定義することもできます。これはデストラクターと呼ばれます。

継承はクラスの強力な機能です。 1 つのクラス (サブクラス/派生クラス) は別のクラス (親クラス/基本クラス) の機能を継承でき、派生クラスには基本クラスのすべてのプロパティとメソッドが含まれ、他のプロパティとメソッドを派生クラスに追加できます。 。基本クラスのメソッドとプロパティをオーバーライドすることもできます。前に示したように、extends キーワードを使用してクラスを拡張できます。

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

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

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

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

PHPのコンストラクターには、他のクラスメソッドと同様にアクセスメソッドを与えることができます。アクセス メソッドは、特定の範囲からオブジェクトをインスタンス化する機能に影響します。これにより、シングルトン パターンなどのいくつかの固定設計パターンの実装が可能になります。

コンストラクターの反対のデストラクター。 PHP はこれらを呼び出して、メモリからオブジェクトを破棄します。デフォルトでは、PHP はオブジェクトのプロパティによって占有されているメモリのみを解放し、オブジェクト関連のリソースを破棄します。デストラクターを使用すると、オブジェクトの使用後に任意のコードを実行してメモリをクリアできます。

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

以下の例では、Counterクラスはコンストラクタから値が増加し始め、デストラクタで値が減少します。

クラスを定義したら、newを使用してクラスのインスタンスを作成できます。クラスの定義は設計図であり、インスタンスはアセンブリラインに配置されるコンポーネントです。Newにはクラスの名前が必要です。 Example クラスのインスタンスを返します。コンストラクターにパラメーターが必要な場合は、new の後にパラメーターを入力する必要があります。 OClass Count
{
Private Static $ Count = 0;

Function __ConStruct () {
Self :: $ count ++; unt-;}}

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

//最初のインスタンスを作成します
$c = new Counter();

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

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

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

//インスタンスを破棄します
$c2 = NULL;
print($c->getCount() . "n");





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