PHPコンストラクタとデストラクタ
はじめに
オブジェクト指向プログラミングの用語では、コンストラクターはクラス内で定義されたメソッドであり、オブジェクトの作成時に自動的に呼び出されます。コンストラクターメソッドの目的は、オブジェクトを初期化することです。 PHPでは、特別な名前のメソッド __construct コンストラクターとして機能します。
構文
__construct ([ mixed $args = "" [, $... ]] ) : void
コンストラクターの例
この例は、オブジェクトが宣言されたときにコンストラクターが自動的に実行されることを示しています
例
<?php class myclass{ function __construct(){ echo "object initialized"; } } $obj=new myclass(); ?>
出力
これにより、次の結果が得られます。 −
object initialized
引数を持つコンストラクター
クラスのプロパティは、引数を使用してコンストラクターによって初期化されます
例
<?php class rectangle{ var $height; var $width; function __construct($arg1, $arg2){ $this->height=$arg1; $this->width=$arg2; } function show(){ echo "Height=$this->height Width=$this->width"; } } $obj=new rectangle(10,20); $obj->show(); ?>
出力
これにより、次の結果が得られます。 −
Height=10 Width=20
継承のコンストラクター
親クラスにコンストラクターが定義されている場合は、 parent ::__constructによって子クラスのコンストラクター内で呼び出すことができます。 。ただし、子クラスがコンストラクターを定義していない場合は、基本クラスから同じものを継承します。
例
<?php class a{ function __construct(){ echo "this is a constructor of base class\n"; } } class b extends a{ function __construct(){ parent::__construct(); echo "this a constructor class b\n"; } } class c extends a { // } $a=new a(); $b=new b(); $c=new c(); ?>
出力
これにより、次の結果が得られます。 −
this is a constructor of base class this is a constructor of base class this a constructor class b this is a constructor of base class
デストラクタ
デストラクタは、ガベージコレクタが特定のオブジェクトに参照がなくなったことを確認するとすぐに自動的にメソッドになります。 PHPでは、デストラクタメソッドの名前は __destruct 。シャットダウンシーケンス中も、オブジェクトは破棄されます。デストラクタメソッドは引数を取りません。また、データ型も返しません
例
<?php class myclass{ function __construct(){ echo "object is initialized\n"; } function __destruct(){ echo "object is destroyed\n"; } } $obj=new myclass(); ?>
出力
次の結果が表示されます
object is initialized object is destroyed
-
C#のプライベートコンストラクターとシングルトンクラス
以下に示すように、静的メンバーのみを含むクラスでプライベートコンストラクターが使用されます- class Demo { // private constructor private Demo() { } public static a = 10; } シングルトンクラスには通常のメソッドがあり、インスタンスを使用して呼び出すことができます。 クラスの複数のインスタンスを防ぐために、プライベートコンストラクターが使用されます。 例を見てみましょう- 例 public class Singleton { &nbs
-
Javaのコンストラクターとは何ですか?
コンストラクター Javaでは、構文的にメソッドに似ています。違いは、コンストラクターの名前がクラス名と同じであり、戻り型がないことです。 インスタンス化時に暗黙的に呼び出されるコンストラクターを呼び出す必要はありません。コンストラクターの主な目的は、クラスのインスタンス変数を初期化することです。 構文 コンストラクターの構文は次のとおりです- class ClassName { ClassName() { } } コンストラクターを定義するときは、次の点に注意する必要があります。 コンストラクターには戻り型がありません。 コンストラ