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

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

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


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

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

継承はクラスの強力な機能です。クラス (サブクラス/派生クラス) は、別のクラス (親クラス/基本クラス) の関数を継承できます。 3.1 と同様に、extends キーワードを使用してクラスを継承することもできます。 コンストラクターがどのように継承されるのか疑問に思われるかもしれません。コンストラクターが他のメソッドとともに継承される場合、オブジェクトの作成時に実行されません。
この機能が必要な場合は、第 2 章 ::operator で説明されているメソッドを使用する必要があります。これにより、parent::__construct を使用して親クラスのコンストラクターを呼び出すことができます。 一部のオブジェクト指向言語では、コンストラクターにクラスの名前を付けます。これは PHP の以前のバージョンでも同様であり、このメソッドは引き続き機能します。つまり、クラスに Animal という名前を付け、その中に Animal という名前のメソッドを作成すると、このメソッドはコンストラクターです。クラスに __construt コンストラクターとそのクラスと同じ名前の関数の両方がある場合、PHP は __construct をコンストラクターとして扱いますが、新しいスクリプトは引き続き使用できます。 PHP5) では __construct を使用する必要があります。 PHP の新しいコンストラクター宣言方法により、コンストラクターが属するクラスの名前に関係なく、コンストラクターに一意の名前を付けることができます。この方法では、クラスの名前を変更するときにコンストラクターの名前を変更する必要がありません。 PHP のコンストラクターには、他のクラス メソッドと同様にアクセス メソッドを指定できます。このアクセス メソッドは、特定のスコープからオブジェクトをインスタンス化する機能に影響を与えます。これにより、シングルトン パターンなどのいくつかの固定デザイン パターンを実装できます。 デストラクターはコンストラクターの逆です。デフォルトでは、PHP はオブジェクトのプロパティによって占有されているメモリーを解放するだけで、任意のコードの実行後にオブジェクトを使用できるようになります。記憶をクリアするために。 デストラクターは、関数の名前空間内でスクリプトがオブジェクトに関連付けられていないと判断したときに呼び出されます。これは、関数が明示的に終了するときに行われます。オブジェクトを破棄する場合は、そのオブジェクトを指す変数に他の値を割り当てることができます。通常は、変数に NULL を割り当てるか、unset を呼び出します。 次の例では、クラスからインスタンス化されたオブジェクトの数がカウントされます。Counter クラスはコンストラクターで増加を開始し、デストラクターで減少します。 クラスを定義したら、new を使用してクラスのインスタンスを作成できます。クラスの定義はブループリントであり、インスタンスはアセンブリ ラインに配置されるコンポーネントです。New はクラスの名前を取得してインスタンスを返します。コンストラクターにパラメーターが必要な場合は、new の後にパラメーターを入力する必要があります。 クラス カウンタ
{
private static $count = 0; 関数 __construct()
{
self::$count
} 関数 __destruct()
{
self::$count--; function getCount()
{
return self::$count
}
} //最初のインスタンスを作成します
$c = new Counter(); //出力 1
print($c->getCount() . "
n"); // 2 番目のインスタンスを作成します
$c2 = new Counter(); //出力 2
print($c->getCount() . "
n"); //インスタンスを破棄します
$c2 = NULL; // 出力 1
print($c->getCount() . "
n"); 新しいインスタンスを作成すると、すべてのプロパティを保存するためのメモリが準備されます。ただし、メソッドはクラスのすべてのインスタンスで共有されます。

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