ホームページ > バックエンド開発 > PHPの問題 > PHPコンストラクターメソッドの役割

PHPコンストラクターメソッドの役割

藏色散人
リリース: 2023-02-23 10:58:02
オリジナル
3917 人が閲覧しました

PHPコンストラクターメソッドの役割

#php コンストラクター メソッドの役割

php コンストラクター メソッドの役割は、次の場合にオブジェクトを初期化することです。つまり、オブジェクトのメンバー変数に初期値を割り当て、オブジェクトを作成するステートメントで常に new 演算子と一緒に使用されます。特殊クラスは複数のコンストラクターを持つことができ、パラメーターまたはパラメーターの型の数、つまりコンストラクターのオーバーロードに基づいて区別できます。

関連する推奨事項: [

PHP チュートリアル ]

コンストラクター

__construct ([ mixed $args [, $... ]] ) : void
ログイン後にコピー

PHP 5 では、開発者がクラスで作業できるようにします。メソッドをコンストラクターとして使用します。コンストラクターを持つクラスは、新しいオブジェクトが作成されるたびにこのメソッドを呼び出すため、オブジェクトを使用する前に初期化作業を行うのに非常に適しています。

注:

コンストラクターがサブクラスで定義されている場合、その親クラスのコンストラクターは暗黙的に呼び出されません。親クラスのコンストラクターを実行するには、子クラスのコンストラクターでparent::__construct()を呼び出す必要があります。サブクラスでコンストラクターが定義されていない場合、通常のクラス メソッドと同様に親クラスから継承されます (プライベートとして定義されていない場合)。

例 1 新しい標準コンストラクターの使用

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}
class OtherSubClass extends BaseClass {
    // inherits BaseClass&#39;s constructor
}
// In BaseClass constructor
$obj = new BaseClass();
// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();
// In BaseClass constructor
$obj = new OtherSubClass();
?>
ログイン後にコピー

下位互換性のために、PHP 5 がクラス内で __construct() 関数を見つけられず、それが継承されない場合親クラスからコンストラクターを取得すると、クラスと同じ名前の関数である古いスタイルのコンストラクターを見つけようとします。したがって、互換性の問題が発生するのは、クラスに __construct() という名前のメソッドがすでに存在するが、それが他の目的に使用されている場合だけです。

他のメソッドとは異なり、__construct() が親クラス __construct() とは異なるパラメーターを持つメソッドによってオーバーライドされた場合、PHP は E_STRICT エラー メッセージを生成しません。

PHP 5.3.3 以降、ネームスペースでは、クラス名と同じ名前のメソッドはコンストラクターとして使用されなくなりました。この変更は、名前空間にないクラスには影響しません。

例 2

<?php
namespace Foo;
class Bar {
    public function Bar() {
        // treated as constructor in PHP 5.3.0-5.3.2
        // treated as regular method as of PHP 5.3.3
    }
}
?>
ログイン後にコピー

以上がPHPコンストラクターメソッドの役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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