它是哪种类型的PHP对象模式用例?

时间:2020-05-15 23:36:22

标签: php oop

考虑以下代码:

UM()->Activity_API()->api()->get_author( $id )

我对这里的UM()感到困惑。这是一堂课吗?如果是,那么为什么用圆括号将其引用,以及如何将Activity_API()方法进一步引用为api()方法,然后再引用get_author()方法呢?

1 个答案:

答案 0 :(得分:2)

在您的特定示例中,UM不是类,而是返回具有公共Activity_API()方法的对象的函数。

例如

class Foo {
    public function Activity_API() 
    {
        echo "hello";
    }
}

function UM(): Foo {
    return new Foo();
}

UM()->Activity_API();

该文件专门记录在here中。函数UM()返回同名类\UM的实例。

这种方法仅用于拥有更简洁明了的构建器。您可以这样做:

(new \UM())->Activity_API()->api()->get_author( $id )

链中的每个方法都返回另一个对象。在这种情况下,\UM的另一个实例。

由于链中的每个方法都返回另一个对象,因此您可以调用任何公共方法或访问返回对象的任何公共属性,而无需创建任何中间变量。

这称为“ Fluent Interface”:

在软件工程中,流畅的接口是一种面向对象的API,其设计广泛依赖于方法链接。其目标是通过创建特定领域的语言来提高代码的可读性。这个词是2005年由Eric Evans和Martin Fowler创造的。

相关问题