PHP 7匿名类

Tej*_*rma 1 php anonymous-class php-7

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

Joe*_*ins 5

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

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

function name() {
    function sub() {

    }
}
Run Code Online (Sandbox Code Playgroud)

但正如上面的代码包含两个全局可访问的函数一样,以下代码仍包含两个全局可访问的类:

class C {
    function method () {
        return new class{};
    }
}
Run Code Online (Sandbox Code Playgroud)

它可以让您对类的易于访问的位置进行控制,从这个意义上说它们是嵌套的.

它们不是嵌套的,因为在另一个类中声明的匿名类无法访问创建类的任何成员.

这样:

class C {
    private $member;

    public function method() {
        return new class {
            public function method() {
                return $this->member;           
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

无效,因为匿名类没有真正嵌套.