考虑以下代码:
UM()->Activity_API()->api()->get_author( $id )
我对这里的UM()
感到困惑。这是一堂课吗?如果是,那么为什么用圆括号将其引用,以及如何将Activity_API()
方法进一步引用为api()
方法,然后再引用get_author()
方法呢?
答案 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创造的。