我不擅长PHP和Kohana新手。
我很感兴趣Kohana是如何制作这个结构的:Request::current()->controller()
。我们先调用静态方法,然后再调用非静态方法。
如何组织类似的结构?
Request::current()
将返回一个对象,您将对该对象执行controller()
方法。
我知道你对同时使用静态和非静态感到困惑。这一点也不令人困惑。给定这两个类:
static class StaticClass
{
public function GetSomeObject
{
return new SomeObject();
}
}
class SomeObject
{
public function DoSomething()
{
// Do something
}
}
你可以自己初始化一个SomeObject,并执行它的方法:
$someObject = new SomeObject();
$someObject->DoSomething();
但在某些情况下,这是不可取的。我可以想象StaticClass
是某种存储库(例如,单例或工厂),管理SomeObject
实例。您必须从StaticClass中检索所有SomeObject
。在这个例子中是这样做的:
$someObject = StaticClass::GetSomeObject();
你可以再次调用方法:
$someObject->DoSomething();
后两者可以同时写成:
StaticClass::GetSomeObject()->DoSomething();