Является ли MVC единственным способом писать PHP?

Огромное количество фреймворков, доступных для PHP, теперь использует MVC. Даже ASP.net имеет свой собственный MVC-модуль.

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

Так что вопрос. В профессиональной среде это единственный способ использовать PHP в наши дни или другие методы проектирования, которые имеют альтернативные преимущества?

Мне не нравится, когда кто-нибудь говорит мне, как писать код. Если я хочу использовать MVC, я, если найду лучший способ решить конкретную задачу, я буду использовать ее. Мне не нравится, когда люди превращают MVC в религию. Я также думаю, что многие php-кодеры неправильно понимают концепцию MVC и думают, что используют шаблон MVC, когда на самом деле большую часть времени не используют 100% -ный чистый MVC. По правде говоря, нелегко и не очень эффективно писать веб-сайт, который является 100% MVC и написан на php.

Большинство людей испытывают наибольшие трудности в «V» части MVC. «М» легко. Это ваши данные. Если вы храните свои данные в базе данных и имеете класс доступа к базе данных, это ваша «M» часть, вы хорошо с «M»,

Теперь контроллер: когда пользователь нажимает на любую ссылку вашей страницы, ваш php-код должен получить данные из «M» (базы данных), подготовить его, применить некоторую логику, например добавить персонализацию для входа в систему, добавив ссылку «пожалуйста, войдите» если пользователь не зарегистрировал его и т. д. Это ваша часть «C».

Проблема, с которой сталкивается большинство людей, заключается в разделении «V» View с «C» (контроллер). Это непросто и не самый эффективный способ кодирования в php. Во многих случаях часть контроллера должна уже генерировать некоторый html, поэтому вы размываете линию между контроллером и представлением.

Если вы хотите остаться чистым MVC, вы должны убедиться, что ваш контроллер вернет чистые данные, тогда класс View возьмет некоторый шаблон, подключит ваши данные и вернет HTML. Здесь проблема кроется в php. Нет простого и эффективного способа создания шаблонов, где шаблон просто берет чистые данные как входные данные и возвращает html. Если бы был простой способ, тогда не было бы причин, по которым люди могли бы придумать еще одну новую библиотеку шаблонов. Причина, по которой так много библиотек шаблонов для php, состоит в том, что всегда есть программисты, которые недовольны ЛЮБОЙ из существующих и продолжают пытаться изобрести свои собственные, лучшие.

Единственной чистой библиотекой шаблонов, на мой взгляд, является XSLT, который полностью поддерживается php, он поставляется с php, он работает, это мощный, отличный механизм шаблонов, тем не менее, это стандартный, независимый от платформы язык. После изучения XSLT вы можете использовать его на любом другом языке программирования, таком как Java. Однако у него есть одна крошечная проблема. Он требует, чтобы входные данные были XML. Конечно, вы можете создать отличный, 100% действительный XML в php, также используя библиотеку DOM, которая также является частью php. Проблема в том, что она будет медленной. Вы будете выполнять двойную работу: сначала создайте XML из своего массива данных, а затем преобразуйте этот XML в HTML с помощью своего XSL-шаблона. Вот почему подход XSLT в качестве шаблонизатора никогда не снимался в php.

Теперь вы ушли с другими параметрами для анализа шаблонов, как правило, на основе регулярных выражений. Вы видите, как это всегда усложняется, когда мы попадаем в «V» часть MVC?

«M» легко, «C» – это некоторый тип чистого php-кода, будь то ООП или процедурный код, не имеет значения. Это «взгляд», который является сложным.

Поэтому мой совет – не беспокойтесь о прилипании к чистому MVC. Это нормально для контроллера, чтобы выплевывать куски html здесь и там.

Ну, есть много других подходов.

MVC просто популярен, потому что он подходит для большинства ситуаций (или, лучше сказать, может использоваться в большинстве ситуаций) и зарекомендовал себя как де-факто стандарт.

Можно сказать, что каждый шаблон программирования / дизайна – или более конкретная архитектура – зависит от некоторой классификации.

Это часто (разумеется, их можно разделить дальше):

  • Пользовательский интерфейс (красивые изображения, формы и т. Д.)

  • Приложение (ваша прикладная логика и прочее, которое необходимо защитить от клиента), многие из которых часто могут выполняться в пользовательской сети, например, с помощью javascript)

  • База данных – объяснение себя

  • Инфраструктура (очень простые вещи, такие как жесткий диск, серверные системы, сеть и т. Д.)

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

Mvc является одним из них. Но вот некоторые примеры других:

http://en.wikipedia.org/wiki/Model_View_ViewModel

http://en.wikipedia.org/wiki/Model_View_Presenter

Является ли MVC-ARS предпочтительным для классического MVC для предотвращения перегрузки?

И здесь намного больше:

http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)