首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中,您可以在同一行上实例化一个对象和调用一个方法吗?

在PHP中,您可以在同一行上实例化一个对象和调用一个方法吗?
EN

Stack Overflow用户
提问于 2009-09-09 22:38:00
回答 7查看 64.7K关注 0票数 140

我想做的事情是这样的:

代码语言:javascript
复制
$method_result = new Obj()->method();

而不是必须这样做:

代码语言:javascript
复制
$obj = new Obj();
$method_result = $obj->method();

在我的特定情况下,结果实际上对我来说并不重要。但是,有没有办法做到这一点呢?

EN

回答 7

Stack Overflow用户

发布于 2011-07-13 08:43:48

您可以通过定义一个标识函数来实现更普遍的功能:

代码语言:javascript
复制
function identity($x) {
    return $x;
}

identity(new Obj)->method();

这样你就不需要为每个类定义一个函数。

票数 19
EN

Stack Overflow用户

发布于 2009-09-09 22:40:50

这样如何:

代码语言:javascript
复制
$obj = new Obj(); $method_result = $obj->method(); // ?

:P

票数 18
EN

Stack Overflow用户

发布于 2009-09-09 22:38:29

不,这不可能。

您需要将实例赋给一个变量,然后才能调用它的任何方法。

如果你真的不想这样做,你可以像ropstah建议的那样使用一个工厂:

代码语言:javascript
复制
class ObjFactory{
  public static function newObj(){
      return new Obj();
  }
}
ObjFactory::newObj()->method();
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1402505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档