Является ли загрузка классов на основе контроллера лучше? (CodeIgniter / KohanaPHP / и т.д ..) - PullRequest
0 голосов
/ 01 ноября 2009

Если вы работали с некоторыми фреймворками, такими как 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 Ответ

1 голос
/ 01 ноября 2009

Если вы разрабатываете библиотеку, которой требуется доступ к дополнительным ресурсам, добавьте эти ресурсы в качестве зависимостей вашей библиотеки. Это означает, что когда вам нужен класс из вашей библиотеки, передайте все необходимые ресурсы при его создании с помощью конструктора.

Например:

class MyLib {
    public function __construct(DB $db) {
        $this->db = $db;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...