Kohana如何在静态和非静态之间建立链


How Kohana make chain between static and non-static?

我不擅长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();