1

PHP 7 引入了一个名为匿名类的新类特性,它允许我们创建对象而无需命名它们。匿名类可以嵌套。您对内存消耗、执行时间、性能问题有何看法?是否有可用的指标/统计数据?

4

1 回答 1

5

匿名类是没有程序员声明名称的类,它们在其他方面与普通类相同。

语法允许它们嵌套,就像函数一样:

function name() {
    function sub() {

    }
}

但是就像上面的代码包含两个全局可访问的函数一样,下面的代码仍然包含两个全局可访问的类:

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 回答