PHPコンストラクター

WBOY
リリース: 2016-06-23 14:31:44
オリジナル
995 人が閲覧しました

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

私が言いたいのは、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 クラスのメソッド コンストラクターは呼び出すことができません。 .

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!