ホームページ  >  記事  >  バックエンド開発  >  PHP コンストラクターとデストラクター PHP メモリ管理関数

PHP コンストラクターとデストラクター PHP メモリ管理関数

WBOY
WBOYオリジナル
2016-07-25 08:53:52700ブラウズ
  1. class person{
  2. var $name;
  3. var $age;
  4. function __construct(){// コンストラクター
  5. $this->name="lisi";
  6. $this- > ;age=28;
  7. }
  8. function Say(){
  9. echo "私の名前は ".$this->name."
    ";
  10. echo "私の年齢は ".$this- > ;年齢。"

    ";

  11. }
  12. }
  13. $per=新しい人();
  14. $per->say();
  15. $per->name="張三";
  16. $per-> ;age=26;
  17. $per->say();
  18. ?>
コードをコピー

コンストラクターの反対はデストラクターです。デストラクタは php5 に新しく追加されたものです。php4 にはデストラクタはありません。デストラクターを使用すると、クラスが破棄される前に一部の操作または関数を実行できます。これは通常、クラスへのすべての参照がリセットされるかスコープ外になると自動的に行われます。 コンストラクターの名前と同様に、クラスのデストラクターの名前は __destruct() でなければなりません。デストラクターはパラメータを取ることができません。

  1. class person {
  2. function __destruct()
  3. {
  4. echo "バイバイ !"
  5. }
  6. }
  7. $a=new person();
  8. ?>
;コードをコピー

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

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

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

コンストラクターがどのように継承されるのか疑問に思われるかもしれません。 他のメソッドとともに継承された場合、オブジェクトの作成時に実行されません。 この機能が必要な場合は、:: 演算子を使用する必要があります。 これにより、名前空間を指すことができます。 parent は親クラスの名前空間を指します。parent::__construct を使用して親クラスのコンストラクターを呼び出すことができます。

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

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

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

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

スクリプトがオブジェクトに関連付けられていないとphpが判断すると、phpデストラクターが呼び出されます。 関数の名前空間内では、関数が戻るときにこれが発生します。 グローバル変数の場合、これはスクリプトの最後に行われます。 オブジェクトを明示的に破棄する場合は、オブジェクトを指す変数に他の値を代入できます。 通常、変数には null が代入されるか、unset が呼び出されます。

次の例では、クラスからインスタンス化されたオブジェクトの数をカウントします。カウンタ クラスの値はコンストラクタから増加し始め、PHP デストラクタで値が減少します。

クラスを定義したら、new を使用してこのクラスのインスタンスを作成できます。 クラス定義は設計図であり、インスタンスは組立ラインに配置される部品です。 new はクラスの名前を取得し、そのクラスのインスタンスを返します。 コンストラクターにパラメーターが必要な場合は、new の後にパラメーターを入力する必要があります。 例:

    class counter {
  1. private static $count = 0;
  2. function __construct() { self::$count++; }
  3. function __destruct() { self::$count--;
  4. function getcount() { return self::$count; } }
  5. //最初のインスタンスを作成し、コンストラクターを呼び出します。 $count = 1
  6. $c = new counter()
  7. // 1 を出力します
  8. print($ c ->getcount() . "
    ");
  9. // 2 番目のインスタンスを作成し、コンストラクターを呼び出します。 $count = 2
  10. $c2 = new counter();
  11. // 出力 2
  12. ; $c->getcount() . "
    ");
  13. // インスタンスを破棄し、デストラクターを呼び出します。 $count = 1
  14. $c2 = null
  15. // 1 を出力します
  16. print( $c ->getcount() . "
    ");
  17. プログラムの実行結果: 1 2 1 新しい PHP デストラクター インスタンスが作成されると、すべてのプロパティを保存するためのメモリが準備されます。 各インスタンスには、独自の一意のプロパティ セットがあります。 ただし、メソッドはクラスのすべてのインスタンスで共有されます。

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