我在 PHP 中读过这个有趣的语法:
$value = (new MyClass)->attribute1;
- 可以使用吗?在我分析过的任何代码中,我从未见过这样的事情。有什么优点和缺点吗?
为什么我不能使用这种语法设置属性?像这样的结构:
(new MyClass)->attribute1 = 'value1';
在 '=' 符号处抛出错误,无论该属性是否已经存在于类中。
好吧,我看不出使用它的意义,因为你失去了对对象的引用,你不能再使用它了,它打破了 OO 概念。
我认为 (new MyClass)->attribute1 是先解决的,所以和写 42 = 12 之类的东西是一样的
MyClass
如果该类支持所有现有实例的内部静态列表(或哈希图),这可能是有道理的。通过这种方式,您可以创建新对象并在列表中获取其唯一 ID 或索引以供将来参考(例如,通过 cookie 将其发送到客户端)。
至于分配,您将针对这种情况发布确切的错误消息。我可以猜到,错误是关于将某些东西分配给即将被销毁的临时值。