如果您使用过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负责人?我知道从模型加载资源很糟糕 - 但是控制器没有涉及的其他库包呢?
答案 0 :(得分:1)
如果您正在开发需要访问其他资源的库,请将这些资源添加为库的依赖项。这意味着,当您需要库中的类时,在通过构造函数创建它时传入任何所需的资源。
例如:
class MyLib {
public function __construct(DB $db) {
$this->db = $db;
}
}