У меня простой вопрос.
class controller{
$model;
$view;
$db;
$array;
public function __construct(Model $model, View $view, Database $db, Input $array){
$this->model = $model;
$this->view = $view;
$this->db= $db;
$this->array = $array;
}
public function giveToModel{
$this->model->someFunction($this->view, $this->db , $this->array);
}
}
Теперь я как бы новичок в программировании, поэтому у меня есть несколько вопросов. Чтобы придерживаться определенных принципов в кодировании, таких как SOLID и т. д., DI является обязательным. Однако я немного не понимаю, как реализовать это в среде MVC. Мне просто нужны указатели.
Что касается кода выше. Я действительно не уверен, что это за инъекция. Есть ли необходимость вводить все это через конструктор. или я должен ввести некоторые из них (View $ view, Database $ db, Input $ array) через функцию "giveToModel".
И еще один. Могу ли я сделать два контейнера, например, вот так:
class controllerDepen {
public function loadModel($name){
return new $name.'Model';
}
public function postArray(){
return new $postData; //object that gathers all the $_POST data into one array
}
}
И еще один, чтобы обрабатывать зависимости для модели, а затем передавать их и использовать их для установки зависимостей.
Мои основные проблемы:
Я знаю, что для подобных вещей существуют DIC, однако я бы очень хотел получить представление об этом предмете, прежде чем использовать их.
Как видите, мне могут потребоваться дополнительные пояснения по этой теме.
хорошо, я понял. Передайте через конструктор только то, что вам необходимо. Затем, чтобы добавить к этому вопросу. если я работаю в рамках MVC, нужно ли мне создать экземпляр представления в классе начальной загрузки, а затем передать его модели через контроллер или создать его в контроллере и отправить в модель?
В этом конкретном случае я подозреваю, что контроллер диктует, какой вид необходим? В этом случае лучше всего настроить фабрику в контейнере DI (Auryn поддерживает это, и я подозреваю, что и большинство других фреймворков DI), которая определяет конкретный контроллер и создает его с правильным представлением. В этом случае могут быть актуальны и функции delegate (), и prepare (). github.com/rdlowrey/auryn#instantiation-delegates
Хм. он идет bootstrap (взорвать $ url call right controller) -> controller-> model-> view. однако, если я должен придерживаться концепции DI, я должен предоставить модели экземпляр вида "извне". так что я создаю представление в начальной загрузке, а затем отправляю его контроллеру, а затем моделирую или я реализую контейнер в контроллере, который «создает» экземпляр, а затем отправляет его оттуда. вот что меня смущает






Общее правило заключается в том, что если экземпляр класса не будет работать без определенной зависимости, эту зависимость следует внедрить через конструктор. Если экземпляр класса может использоваться без зависимости, но может использовать ее в своих интересах, то его можно внедрить через конструктор (со значением по умолчанию = null) или через метод установки после построения. В этом случае это вопрос суждения, какой из них приемлем, с такими факторами, как «Можно ли, чтобы зависимый экземпляр был заменен другим экземпляром в течение жизненного цикла потребляющего класса?» помогая сообщить решение)