ホームページ  >  記事  >  バックエンド開発  >  PHPコンストラクター

PHPコンストラクター

WBOY
WBOYオリジナル
2016-06-23 14:31:441005ブラウズ

初めてブログ記事を書きます。

私が言いたいのは、PHP がクラスのインスタンスを作成するときにコンストラクター メソッドを呼び出す問題です。

Java とは異なり、クラスのインスタンスを作成するとき、すべての属性が正しく初期化されることを確認するために、最初に親クラス (スーパークラス) のコンストラクターが自動的に呼び出されます。 PHP は、このクラスのコンストラクターで親クラスのコンストラクターを自動的に呼び出しません。本当に親クラスのコンストラクターを呼び出す必要がある場合は、parent::__construct($params...);

class Base{

function __construct(){

// do sth here ....

}

}

Base を継承する Extender が必要な場合に注意する必要があるのは、

1 の初期化のために親クラスのコンストラクターを呼び出す必要があるかどうかです。親クラスで構築する必要がありますか? メソッドに基づいて、他の拡張操作が実行されます

3. Base 構築メソッドでは初期化アクションは必要ありません。

エクステンダーがケース 1 のみを満たす場合は、親クラスのコンストラクターが要件を完全に満たしており、追加のコーディングを実行する必要がないため、エクステンダーのコンストラクターを省略できます。

エクステンダーがケース 2 を満たす場合は、エクステンダーのコンストラクターでparent::__construct() を呼び出し、最初に初期化してから、いくつかの拡張操作を実行する必要があります

エクステンダーがケース 3 を満たす場合、選択しないこともできます親クラスのコンストラクターを呼び出します。これには 1 つだけ欠陥があります。Extender を展開するときに、拡張クラスが Base コンストラクターの初期化操作を必要とする場合、この時点でのparent::__construct() の呼び出しは Extender コンストラクターのみを呼び出すことができ、Base クラスのメソッド コンストラクターは呼び出すことができません。 .

したがって、サブクラスのコンストラクター内で親クラスのコンストラクターを手動で呼び出す方が良いと個人的には考えています。

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