在JS中,您可以这种方式访问方法:ParentObject.ChildObject.ChildObjMethod() - 可以在PHP中完成吗?
答案 0 :(得分:2)
不完全是。 ::
运算符用于在类上调用静态方法。因此,您可以静态存储对象的引用,但是您需要使用->
运算符调用该方法。
<?php
class Foo
{
static public $bar;
static public function initStaticMembers()
{
self::$bar = new Bar();
}
}
class Bar
{
public function method()
{
echo "Hello World\n";
}
}
Foo::initStaticMembers();
Foo::$bar->method();
没有办法
Object::ChildObject::method();
方法链接本质上是
之类的快捷方式 $o = Object::ChildObject;
$o::method();
进行第一次调用,然后返回或分配内容。然后在返回的东西上调用下一个方法。您不能使用PHP将类存储在变量中,也不能从函数返回类。因此,您要求做的确切语法是不可能的。
也就是说,方法链在PHP中变得越来越流行。语法如下
$o = new Baz();
$o->method()->anotherMethod()->yetAnotherMethod();
$o->someObjectReference->methodCall()->etc();
正在变得普遍。这是有效的,因为每个调用或变量引用
$o->method();
$o->someObjectReference;
返回另一个Object实例,然后可以在其上调用一个方法。
答案 1 :(得分:1)
::
可用于访问静态类成员。但您也可以使用普通的->
箭头来访问PHP中的实例化子对象:
$parent->child->child_method();