gpt4 book ai didi

php - 为什么构造对象时不能使用它?

转载 作者:行者123 更新时间:2023-12-03 08:03:05 25 4
gpt4 key购买 nike

我尝试搜索此问题,但坦率地说,我不知道要搜索什么,但不幸的是,我想这个问题曾被问过。

在PHP和其他语言中,为什么在创建对象后不能立即使用它?

// This causes an error
$obj = new Object()->myFunction();

注意:我会在大多数设置函数中返回 $this,因此可以将它们链接在一起
function myFunction() {
// ... some more code here ...

return $this;
}

最佳答案

这只是PHP中的无效语法。通过将对象构造函数表达式括在括号中,可以使它在PHP 5.4中起作用:

$obj = (new Object())->myFunction();

参见 PHP 5.4 new features:

  • Class member access on instantiation has been added, e.g. (new Foo)->bar().


如果希望 $obj为新Object的值,请确保从 $this返回 Object::myFunction()(这称为 method chaining)。

使构造函数链起作用的另一种方法是在您的类中使用一个静态方法,该方法为您创建新的类实例:
class Object {
public function __construct($var) {
$this->var = $var;
}
public static function newObject($var) {
return new Object($var);
}
}

$obj = Object::newObject()->chainMethodX()->chainMethodY()->...

关于php - 为什么构造对象时不能使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17052302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com