我只是好奇是否有可能在创建一个对象时获取类变量的值?我想做的是:
$class = new MyClass("something")->ok;
对于上面的示例,该类是:
class MyClass {
public $ok;
public function __construct($a) {
$this->ok = $a;
}
}
我知道通过再写一行来获取$a
的值很容易,但我真的很好奇是否可以用更短的方式来做。
答案 0 :(得分:2)
是的,有可能。此功能称为“实例方法调用”,为introduced in PHP 5.4。只需包含一对包含new MyClass()
表达式的额外括号:
$class = (new MyClass("something"))->ok;
^ ^
表达式new MyClass()
是返回对象的东西(而不是类构造函数),这就是为什么它需要包含在一对额外的括号中。
更多阅读: