我在Kohana中不擅长PHP和新手。
我非常感兴趣Kohana如何构建这个结构:Request::current()->controller()
。我们调用静态方法,然后调用非静态方法。
我如何组织类似的结构?
答案 0 :(得分:2)
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();