当前位置:  开发笔记 > 编程语言 > 正文

使用PHP中的对象函数调用链接构造函数

如何解决《使用PHP中的对象函数调用链接构造函数》经验,为你挑选了2个好方法。

有谁知道在PHP的下一个版本中是否可以使用以下表达式?

(new A())->a();    // Causes a syntax error

我觉得非常讨厌,目前必须写2行而不是1行:

$c = new A();
$c->a();

Ionuț G. Sta.. 7

第一个版本不会导致解析错误,它完全有效.第二个,实际上是不可能的,但你可以用一些编码标准轻松克服这个问题.

如果每个团队成员为每个定义的类创建一个与该类同名的函数,以及一个类似于类构造函数签名的签名,那么您将不会遇到第二个问题.例:

class Foo
{
    public function __construct($param)
    {}

    public function bar()
    {}
}

/**
 * @return Foo
 */
function Foo($param)
{
    return new Foo($param);
}

Foo()->bar();

当然,您仍然会遇到库代码问题.



1> Ionuț G. Sta..:

第一个版本不会导致解析错误,它完全有效.第二个,实际上是不可能的,但你可以用一些编码标准轻松克服这个问题.

如果每个团队成员为每个定义的类创建一个与该类同名的函数,以及一个类似于类构造函数签名的签名,那么您将不会遇到第二个问题.例:

class Foo
{
    public function __construct($param)
    {}

    public function bar()
    {}
}

/**
 * @return Foo
 */
function Foo($param)
{
    return new Foo($param);
}

Foo()->bar();

当然,您仍然会遇到库代码问题.



2> 小智..:

new-expression可以用作函数参数.函数调用可以用作成员访问运算符的左侧.因此,您只需要定义一个函数:

function with($object) { return $object; }

with(new A()) -> a();

每班不需要额外的努力.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有