1

我在 PHP 中读过这个有趣的语法:

$value = (new MyClass)->attribute1;
  1. 可以使用吗?在我分析过的任何代码中,我从未见过这样的事情。有什么优点和缺点吗?
  2. 为什么我不能使用这种语法设置属性?像这样的结构:

    (new MyClass)->attribute1 = 'value1';

在 '=' 符号处抛出错误,无论该属性是否已经存在于类中。

4

2 回答 2

2
  1. 好吧,我看不出使用它的意义,因为你失去了对对象的引用,你不能再使用它了,它打破了 OO 概念。

  2. 我认为 (new MyClass)->attribute1 是先解决的,所以和写 42 = 12 之类的东西是一样的

于 2012-11-11T13:00:01.290 回答
0

MyClass如果该类支持所有现有实例的内部静态列表(或哈希图),这可能是有道理的。通过这种方式,您可以创建新对象并在列表中获取其唯一 ID 或索引以供将来参考(例如,通过 cookie 将其发送到客户端)。

至于分配,您将针对这种情况发布确切的错误消息。我可以猜到,错误是关于将某些东西分配给即将被销毁的临时值。

于 2012-11-11T13:31:19.290 回答