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

时间:2011-11-16 12:33:02

标签: php oop kohana

我在Kohana中不擅长PHP和新手。

我非常感兴趣Kohana如何构建这个结构:Request::current()->controller()。我们调用静态方法,然后调用非静态方法。

我如何组织类似的结构?

1 个答案:

答案 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();