クラス内で __construct という名前の関数を宣言すると、その関数はコンストラクターとして扱われ、オブジェクト インスタンスの作成時に実行されます。同様に、コンストラクターにはパラメーターまたはデフォルト値。オブジェクトを作成し、そのすべてのプロパティをステートメントに含めるクラスを定義できます。また、__destruct という関数を定義することもできます。この関数は、オブジェクトが破棄される前に呼び出されます。
継承はクラスの強力な機能です。あるクラス (サブクラス/派生クラス) は、別のクラス (親クラス/基本クラス) の機能を継承できます。その派生クラスには、基本クラスのすべてのプロパティとメソッドが含まれます。派生クラスに他のプロパティやメソッドを追加することもできます。3.1.2 に示すように、extends キーワードを使用してクラスを継承することもできます。
コンストラクターがどのように継承されるのか疑問に思われるかもしれませんが、他のメソッドと一緒に継承されると、オブジェクトの作成時に実行されません。この機能が必要な場合は、第 2 章:: 演算子で説明されているメソッドを使用する必要があります。 parent は名前空間を指します。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--;
関数 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");
新しいインスタンスを作成すると、すべてのプロパティを保存するためのメモリが準備されます。ただし、メソッドはクラスのすべてのインスタンスで共有されます。
http://www.bkjia.com/PHPjc/314091.html