PHP类 - 更好地替代$ this-> base-> class->方法

时间:2011-12-27 16:14:54

标签: php oop base-class

目前,我有一个主类Base加载所有其他控制器和模型,然后由Base加载的每个类都具有类似的结构:

class SomeClass {

    private $base;

    function __construct(&$base) {
        $this->base = $base;
    }

    function SomeMethod() { }

}

然后另一个类必须使用:

class AnotherClass {

    private $base;

    function __construct(&$base) {
        $this->base = $base;

        $this->base->SomeClass->SomeMethod();
    }

}

有没有更好的方法来访问这些其他类?

2 个答案:

答案 0 :(得分:1)

听起来BaseFront Controller pattern的实现。前端控制器是Mediator的一个特例,它完全符合您的要求。它基本上允许SomeClassAnotherClass分别开发和维护,具有更少的依赖性。

但是,不是直接从Base类访问类,最好让SomeClassAnotherClassBase类中注册,并公开其他对象调用的getter方法:

class Base {
    protected $_authenticator;

    public function setAuthenticator(Authenticator $auth) {
        $this->_authenticator = $auth;
    }

    public function getAuthenticator() {
        return $this->_authenticator;
    }
}

class Authenticator {
    protected $_base;

    public function __construct(Base $base) {
        $this->_base = $base;
        $this->_base->setAuthenticator($this);
    }
}

答案 1 :(得分:1)

也许someMethod()可能是静态的:

class SomeClass {

    private $base;

    function __construct(&$base) {
        $this->base = $base;
    }

    public static function SomeMethod() { }

}

然后只是:

class AnotherClass {

    private $base;

    function __construct(&$base) {
        $this->base = $base;

        SomeClass::SomeMethod();
    }

}