6

現在、PHP はコンストラクターに対して 2 つの命名規則をサポートしています。PHP 4 がサポートする Java スタイルのコンストラクター:

class A
{
    public function A()
    {
        echo "I'm a constructor for class A!";
    }
}

PHP 5 は、Java スタイルのコンストラクターと「マジック メソッド」構文の両方をサポートしています。

class A
{
    public function __construct()
    {
        echo "I'm a constructor for class A!";
    }
}

Java スタイルの構文は廃止される予定であり、その一部の機能は最新の PHP では機能しません。しかし、これには興味深い特性があり、「マジック メソッド」構文に類似したものはありません。派生クラスfoobarに明示的なコンストラクターがない場合foobar、基本クラスのメソッドがfoobarコンストラクターになります。

class A
{
    public function A()
    {
        echo "I'm a constructor for class A!";
    }

    public function B()
    {
        echo "I'm a constructor for class B!";
    }
}

class B extends A
{
}

Java スタイルのコンストラクターは非推奨になっているため、set-the-constructor-in-the-parent 言語機能はどうなりますか?

4

2 に答える 2

2

PHP 4 については、おそらくこちらで学習したはずです。

ご存知のように、PHP 5 のドキュメント (ここ) では、__construct() が使用または継承されていない場合、古い構文がフォールバックとして開始されると記載されています。

下位互換性のために、PHP 5 が特定のクラスの __construct() 関数を見つけることができず、クラスが親クラスから継承していない場合、クラスの名前で古いスタイルのコンストラクター関数を検索します。事実上、互換性の問題が発生する唯一のケースは、異なるセマンティクスに使用される __construct() という名前のメソッドがクラスにある場合のみであることを意味します。

したがって、PHP 5.4.11 のように、古い構文は引き続き有効です。予見可能であったとしても、現時点では非推奨の明確な計画はありません。

いずれにせよ、それらがドロップされる場合 (およびドロップされる場合)、__construct() 構文で再現する方法がないため、この機能もドロップされます。

于 2013-02-06T13:52:33.353 に答える
0

現在、どの PHP インストールを行っていますか?

PHP 5 をインストールしている場合:

新しいクラスを作成する場合は、新しいスタイルを使用してください。以前のスタイルのクラスが既にある場合、それらは引き続き機能しますが、可能な場合は更新することをお勧めします。

PHP 4 をインストールしている場合:

Yopu は以前のスタイルを使用する必要があります。後で PHP 5 に変更した場合も動作します。

乾杯。

于 2013-02-06T17:32:07.410 に答える