1

PHP 7 では、匿名クラスと呼ばれる新しいクラス機能が導入されました。これにより、オブジェクトに名前を付ける必要なくオブジェクトを作成できます。匿名クラスは入れ子にすることができます。メモリ消費、実行時間、パフォーマンスの問題についてどう思いますか? 利用可能なメトリック/統計はありますか?

4

1 に答える 1

5

匿名クラスは、プログラマーが宣言した名前のないクラスであり、それ以外は通常のクラスと同じです。

構文により、関数と同様にネストできます。

function name() {
    function sub() {

    }
}

ただし、上記のコードにグローバルにアクセス可能な関数が 2 つ含まれているのと同様に、次のコードにもグローバルにアクセス可能な 2 つのクラスが含まれています。

class C {
    function method () {
        return new class{};
    }
}

クラスがネストされているという意味で、クラスに簡単にアクセスできる場所を制御できます。

別のクラス内で宣言された匿名クラスは、作成するクラスのメンバーにアクセスできないという意味で、それらはネストされていません。

したがって、これは次のとおりです。

class C {
    private $member;

    public function method() {
        return new class {
            public function method() {
                return $this->member;           
            }
        };
    }
}

匿名クラスが完全にネストされていないため、有効ではありません。

于 2015-10-29T15:50:46.873 に答える