ホームページ  >  記事  >  php教程  >  コンストラクターとデストラクター

コンストラクターとデストラクター

黄舟
黄舟オリジナル
2016-12-14 11:10:121165ブラウズ

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

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

継続はクラスの強力な機能です。あるクラス (サブクラス/派生クラス) は、別のクラス (親クラス/基本クラス) の機能を継続できます。その派生クラスには、基本クラスのすべてのプロパティとメソッドが含まれます。派生クラスに他のプロパティやメソッドを追加することもできます。3.1.2 で示したように、extends キーワードを使用してクラスを拡張することもできます。他のメソッドと一緒に拡張された場合、オブジェクトの作成時に実行されません。
この機能が必要な場合は、第 2 章で説明した :: 演算子を使用する必要があります。これにより、名前空間を指すことができます。 .parent は親クラスの名前空間を指します。parent::__construct を使用して親クラスのコンストラクターを呼び出すことができます。 一部のオブジェクト指向言語では、これは以前のバージョンでも同様でした。つまり、クラスに Animal という名前を付け、その中に Animal という名前のメソッドを作成した場合、クラスに同じ名前の __construt コンストラクターと関数の両方がある場合、このメソッドはコンストラクター Function になります。 PHP は __construct をクラスとして扱います。これにより、以前の PHP バージョンで作成されたクラスを引き続き使用できます。ただし、新しいスクリプト (PHP5) を使用する必要があります。PHP でコンストラクターを宣言するこの新しい方法により、コンストラクターは次のことを行うことができます。このように、クラスの名前を変更するときに、コンストラクターの名前を変更する必要はありません。 PHP では、他のクラス メソッドと同様に、アクセス メソッドは特定のスコープからオブジェクトをインスタンス化する機能に影響を与えます。これにより、シングルトン パターンなどのいくつかの固定デザイン パターンを実装できます。

デストラクターはコンストラクターの反対です。デフォルトでは、PHP はオブジェクトのプロパティによって占有されているメモリを解放するだけで、オブジェクトの使用後に任意のコードを実行することでメモリをクリアできます。 PHP は、スクリプトがオブジェクトに関連していないと判断し、関数の名前空間内でデストラクターが呼び出されます。グローバル変数の場合、これはスクリプトの最後で行われます。オブジェクトを明示的に破棄したい場合は、オブジェクトを指す変数に他の値を割り当てることができます。通常、変数を NULL に割り当てるか、unset を呼び出します。

次の例では、クラスからインスタンス化されたオブジェクトの数をカウントします。コンストラクターから開始され、デストラクターでデクリメントされます。

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

class Counter

{

private static $count = の後にパラメーターを入力する必要があります。 0;

function __construct()

{

self::$count ;

}


function __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;

//Output 1

print($c->getCount() . "
n");
?>

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


その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

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