基于控制器的类加载更好吗? (笨/ KohanaPHP /等。)

时间:2009-11-01 20:09:32

标签: php model-view-controller controller

如果您使用过CodeIgniter或KohanaPHP等一些框架,那么您可能已经看到它们是构建的,以便控制器加载所有内容。因此,如果您在库中并希望加载其他资源,则必须获取控制器实例的副本,然后使用该副本加载其他类。

$this->c = get_instance();
$this->c->load->library('other_lib');

我想知道将类加载卸载到另一个库是否不好,这样就不必绑定到控制器实例。例如,

$this->other_lib = load::library('other_lib');
//vs
$this->load->library('other_lib');

我是否违反了任何MVC负责人?我知道从模型加载资源很糟糕 - 但是控制器没有涉及的其他库包呢?

1 个答案:

答案 0 :(得分:1)

如果您正在开发需要访问其他资源的库,请将这些资源添加为库的依赖项。这意味着,当您需要库中的类时,在通过构造函数创建它时传入任何所需的资源。

例如:

class MyLib {
    public function __construct(DB $db) {
        $this->db = $db;
    }
}