Я работал над созданием своего собственного приложения MVC на PHP, и я видел много разных мнений в Интернете о том, как именно это должно быть настроено.Конечно, я понимаю, что, кажется, существует общий подход "Это MVC, это то, что вы делаете из него", но я сталкиваюсь с 2, казалось бы, противоречивыми точками зрения.
Небольшая предыстория моего приложения: я 'я использую smarty в качестве докладчика и объектно-ориентированный подход.Кажется достаточно простым, но я пытаюсь выяснить вездесущий вопрос «что такое модель».
Если я взгляну на некоторые учебные пособия и структуры, они, похоже, рассматривают модель как строго класс, которыйнаследует методы DAL от абстрактного класса, с небольшим дополнительным определением в самом классе, поскольку ваши данные различаются от объекта к объекту.Например, я могу увидеть что-то вроде $ productModel-> get (5), которое возвращает массив из 5 продуктов из базы данных.Так что, если мне нужно запросить несколько моделей?Сохраняю ли я все данные в контроллере или массиве и передаю их в представление?Тогда, если я динамически вызываю свой контроллер, как я могу сохранить данные, уникальные для контроллера, необходимые для визуализации представления?Это кажется плохим, особенно потому, что мне приходится передавать такие вещи, как «controllerName», «controllerData» и мой метод View :: render () сильно раздут с параметрами, если я не передам сам контроллер.Может быть, я чего-то здесь упускаю.
Допустим, я хочу создать логин, который запрашивает таблицу пользователей.Логин - это модель или контроллер, в зависимости от определенных реализаций, которые я видел в Интернете.В некоторых реализациях (я назову этот метод 1) создается LoginController с методом login (), который может сравнивать $ _POST и то, что возвращается из экземпляра пользовательской модели $ user-> get (1), чтобы проверить, проверен ли пользователь.,Или, возможно, login () может быть методом в контроллере по умолчанию.С другой стороны, реализация (метод реализации 2), которая больше похожа на подход Joomla, создаст модель Login и объявит все действия внутри нее.Тогда любые данные, которые должны быть присвоены представлению, будут возвращены этими методами.Так что login-> login () фактически проверит сообщение, посмотрит, есть ли совпадение, и т. Д. Также внутри этой модели модели, вероятно, будет создана модель User.Кроме того, контроллер хранит данные, извлеченные из моделей или передавая десять тысяч переменных.Кажется, это не согласуется с идеей, что модель должна передавать данные в представление, к которому контроллер должен быть закрыт.Также, скажем, я хочу обернуть все, что находится в конкретной модели, обрабатываемой конкретным контроллером, во внешний шаблон.Мне пришлось бы скопировать этот код установки шаблона во все функции контроллера, которые взаимодействуют с этой моделью.Это кажется крайне неэффективным.
Мои чувства по поводу 2: Это не значит, что нужно совершать действия, которые не являются модельными методами.Если я хочу перейти к корню своего сайта, мне нужно создать индексную модель или что-то, что кажется излишним, чтобы иметь модель, которая передает данные в представление.Кроме того, это не очень популярный подход.Тем не менее, мне это нравится больше, потому что я могу просто сделать View :: render (mymodel-> func ()) и убедиться, что данные будут передаваться обратно так, как мне нравится, без необходимости обременять мой контроллер кодомобъединяя тысячи результатов запроса вместе.
Я слишком много раз обдумывал религиозные аргументы по этому поводу и хочу знать, что вы, ребята, думаете.