ホームページ  >  記事  >  バックエンド開発  >  PHPのクラス名と同じメソッドは何ですか

PHPのクラス名と同じメソッドは何ですか

青灯夜游
青灯夜游オリジナル
2021-06-07 13:20:473146ブラウズ

PHP では、クラス名とメソッド名が同じであっても構いませんが、メソッド名とクラス名が同じで、「__construct」がない場合は、そのメソッドがコンストラクタとみなされます。 PHP コンストラクターはクラス内の特別な関数であり、new 演算子を使用してクラスのインスタンスを作成すると、コンストラクターが自動的に呼び出されます。

PHPのクラス名と同じメソッドは何ですか

#このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

Constructor

__construct ( mixed ...$values = "" ) : void

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

注: コンストラクターがサブクラスで定義されている場合、その親クラスのコンストラクターは暗黙的に呼び出されません。親クラスのコンストラクターを実行するには、子クラスのコンストラクターで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 {
    // 继承 BaseClass 的构造函数
}
// In BaseClass constructor
$obj = new BaseClass();
// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();
// In BaseClass constructor
$obj = new OtherSubClass();
?>

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

PHP 5.3.3 以降、ネームスペースでは、クラス名と同じ名前のメソッドはコンストラクターとして使用されなくなりました。名前空間にないクラスは影響を受けません。コンストラクターは、対応するオブジェクトがインスタンス化されるときに自動的に呼び出される通常のメソッドです。したがって、必須のパラメーター、タイプを持つパラメーター、またはデフォルト値を持つパラメーターをいくつでも定義できます。コンストラクターのパラメーターは、クラス名の後の括弧内に置かれます。

例 2 コンストラクター パラメーターの使用

<?php
class Point {
    protected int $x;
    protected int $y;
    public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
}
// 两个参数都传入
$p1 = new Point(4, 5);
// 仅传入必填的参数。 $y 会默认取值 0。
$p2 = new Point(4);
// 使用命名参数(PHP 8.0 起):
$p3 = new Point(y: 5, x: 4);
?>

クラスにコンストラクターがなく、コンストラクターのパラメーターが必要ない場合は、括弧を省略できます。

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPのクラス名と同じメソッドは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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