gpt4 book ai didi

实例化时的 PHP 类成员访问

转载 作者:行者123 更新时间:2023-12-02 07:42:34 26 4
gpt4 key购买 nike

我对 PHP 5.4 的新语法有疑问我的代码在实例化时具有成员访问权限

$oClass = (new Foo)->bar();
$oClass->bar2();

我收到这个错误

Fatal error: Call to a member function bar2() on a non-objec

为什么?

编辑:我在方法 Foo::bar() 中添加了 return $this; 现在它可以工作了

最佳答案

我的猜测是您认为 $oClass 将包含一个对象。不是这种情况;它包含函数 bar() 的结果。

如果您想访问bar2(),您需要照常执行以下操作:

$oClass = new Foo;
$oClass->bar();
$oClass->bar2();

实例化时的类成员访问适用于您只需要简单地访问对象的单个成员,然后就不再需要该对象的情况。

编辑:
我可能忽略了一些东西。

考虑以下代码:

class Test {
public function foo() {
return $this;
}

public function bar() {
return 'oh hai';
}
}

$t = (new Test)->foo();

print $t->bar();

在这种情况下,您仍然可以访问该对象,因为函数 foo() 返回 $this 而您正在存储它,维护对对象。

如果你真的想,你也可以像这样链接方法:

print (new Test)->foo()->bar();

关于实例化时的 PHP 类成员访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9551251/

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