ホームページ >バックエンド開発 >PHPチュートリアル >コンストラクターとデストラクター_PHP チュートリアル
クラス内で関数を宣言し、それに __construct という名前を付けると、この関数はコンストラクターとして扱われ、オブジェクト インスタンスの作成時に実行されます。他の関数と同様に、コンストラクターにもパラメーターがあります。またはデフォルト値を使用して、オブジェクトを作成し、そのすべてのプロパティをステートメントに含めるクラスを定義できます。
オブジェクトが破棄される前に PHP が呼び出す __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.
の後にパラメーターを入力する必要があります。
クラスカウンター
{
プライベート静的 $count = 0;
関数__construct()
{
自分::$カウント ;
}
関数__destruct()
{
self::$count--;
}
関数getCount()
{
自分自身を返す::$count;
}
}
//最初のインスタンスを作成します
$c = 新しいカウンター();
//出力1
print($c->getCount() . "
ん");
// 2 番目のインスタンスを作成します
$c2 = 新しいカウンター();
//出力 2
print($c->getCount() . "
ん");
//インスタンスを破棄します
$c2 = NULL;
//出力1
print($c->getCount() . "
ん");
?>
新しいインスタンスを作成すると、すべてのプロパティを保存するためのメモリが準備されます。ただし、メソッドはクラスのすべてのインスタンスで共有されます。
http://www.bkjia.com/PHPjc/445554.html
true