Является ли WordPress MVC совместимым? [закрытый]


некоторые люди считают WordPress платформой для ведения блога, некоторые думают об этом как о CMS, некоторые ссылаются на WordPress как на платформу разработки. Как бы то ни было, вопрос остается. Является ли WordPress MVC совместимым?

Я читал форумы, и кто-то спросил о MVC около трех лет назад. Были и положительные ответы, и отрицательные. Хотя никто точно не знает, что такое MVC, и все думают об этом по-своему, есть еще общая концепция, которая присутствует в все дискуссии.

У меня мало опыта работы с фреймворками MVC, и, похоже, нет ничего о самой структуре. Большая часть MVC выполняется программистом, я прав? Теперь, возвращаясь к WordPress, можем ли мы рассмотреть ядро rewrite engine (WP_Rewrite) контроллер? Запросы и логика плагина в качестве модели? А темы как вид? Или я все неправильно понял?

спасибо ;)

9 63

9 ответов:

Wordpress сам по себе не спроектирован в MVC, но в рамках этого фреймворка можно создавать очень ориентированные на MVC темы и плагины. Есть несколько инструментов, которые могут помочь:

WordPress MVC solutions:

MVC потоки ВКЛ WordPress.org идеи и Trac:

Wordpress-это своего рода MVC. Во всяком случае, это макет MVC типа pull, где представление "вытягивает" данные из модели. Он делает это очень последовательным способом, вместо того, чтобы использовать множество различных объектов, но это на самом деле делает шаблоны переднего плана проще писать разными способами.

Это также дает представление о некоторой степени логики контроллера (таким образом, kinda-sorta MVC).

давайте запустим это: Wordpress получает URL-адрес. Ядро wordpress выступает в качестве контроллера и определяет, какие начальные запросы для запуска базы данных, и по расширению, какое представление должно быть загружено (представление категории, одно сообщение или просмотр страницы и т. д.). Затем он упаковывает этот ответ на запрос INTIAL и отправляет его в файл представления.

этот файл представления может быть строгим файлом отображения только или он может запрашивать дополнительную информацию / запросы за пределами встроенного. Это pull-тип MVC, где представление извлекает данные из модели вместо того, чтобы контроллер "выталкивал" данные из модели. модель в поле зрения.

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

то, что каждая часть этого не является объектом, не делает это меньше MVC. Вы можете изменить ядро WP без (обязательно) изменение чего-либо о теме. Точно так же, пока вы используете встроенные функции, такие как " get_pages ()", тогда модель и таблицы базы данных могут меняться, пока эти функции все еще возвращают правильные данные. Таким образом, модель независима от представления, и контроллер также независим (за исключением случаев, когда представление добавляет логику контроллера, чтобы сделать больше, чем обычно делает ядро).

в то время как вы могли бы иметь объект модели, содержащий ряд методов и тому подобное WPModel:: get_pages('blah blah'), и содержат все, что таким образом, по-прежнему существует фундаментальное разделение проблем.

просмотр: файлы шаблонов Контроллер: WP core Модель: различные функции, которые обрабатывают конкретную обработку данных.

до тех пор, пока имена, Аргументы и т. д. остаются неизменными (или просто добавляются новые), сохраняется разделение проблем, и один может быть изменен, не нарушая других.

Это не супер-чистая версия MVC, (особенно, когда крючки участвуют), но на базовом уровне он начинается там.

и быть в курсе этого-не так уж плохо. Запрос с веб-сайта довольно по своей сути proceedural: это процесс с четким началом и концом, и просто нужна процедура для обработки запроса, получения данных, упаковки его, а затем умереть. Вы можете настроить эти шаги с помощью объектов и методов объектов и макетов ООП (что облегчит некоторые вещи), или вы можете просто написать много функций звонит и разделяет их таким образом. Членов класса как частный переменные теряются, но в зависимости от потребностей приложения... тебе может быть все равно.

нет одного-великого-способа сделать разработку, и WP сидит на 20% веб-сайтов, поэтому он делает что-то правильно. наверное что-то связанное с тем, что люди не должны изучать/запоминать сложные иерархии классов, чтобы получить базу данных для ответа на вопрос " какие страницы являются дочерними для страницы x? и интернет с этими данными. Не могли бы вы сделать это так просто с ООП? да, но если Joomla-это любой пример того, как трудно реализовать сложный пользовательский веб-сайт с ООП, то WP намного проще и быстрее, а время-деньги.

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

существует разделение представлений (шаблонов) от логики программирования, но только в интерфейсе, а не в панели администратора и общее разделение представлений и логики приложения не обязательно MVC. Реализация шаблона MVC обычно предполагает некоторую парадигму объектно-ориентированного программирования за ней и Wordpress - это главным образом реализовано процедурным способом, с простыми SQL-запросами в функциях PHP, поэтому также не имеет фактической модели.

просто чтобы обновить это с более свежей информацией для людей, попавших в это из поисковых систем-плагин wp-mvchttp://wordpress.org/extend/plugins/wp-mvc/ проходит долгий путь к созданию MVC-фреймворка для разработки плагинов. Вы можете узнать больше здесь: http://wpmvc.org/documentation/70/tutorial/

одна из тем, которая периодически всплывает в дискуссиях, связанных с WordPress, - это идея WordPress и MVC.

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

пример: WordPress не является MVC.

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

"но я люблю в MVC!"

Я тоже! Фактически, я провел последний год, работая над проектом, который более или менее имитировал архитектуру MVC. Высокого уровня, например в MVC.

enter image description here

пример высокого уровня MVC.

например:

Views were implemented using templates
Controllers were implemented by a combination of using function names like create, read, update, destroy, delete, and so on (even though these functions were hooked into the WordPress API
Models were functions also were called to validate and verify data prior to serializing the data. Again, this required that certain functions be hooked into WordPress to achieve the desired result.

наконец, набор правил перезаписи дал приложению чистый набор предсказуемых URL-адресов в формате /people/update /1 или/people / all. Что Делает Шаблон Вордпресс Реализовать?

WordPress реализует событийную архитектуру (из которых есть несколько вариантов, таких как шаблон наблюдателя).

короче говоря, вы можете концептуально думать об этом следующим образом:

Things happen when WordPress is processing information.
You can register your own function to fire when these things happen.

не слишком трудно? Высокоуровневый пример шаблонов, управляемых событиями enter image description here Высокоуровневый пример шаблонов, управляемых событиями

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

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

но я пытаюсь сказать, что нам не нужно пытаться заставить вещи соответствовать шаблону только потому, что нам нравится шаблон. Это не их цель. Вместо этого используйте основной шаблон, который реализует ваша платформа выбора – в нашем случае это шаблон, управляемый событиями,-а затем реализуйте шаблоны там, где они подходят (например, инъекция зависимостей или что – то в этом роде).

в противном случае, это все равно, что пытаться поставить ногу в перчатка.

любезность (и полностью скопировано: P) из : http://tommcfarlin.com/wordpress-and-mvc/

просто чтобы добавить в список опций ,(я, по общему признанию, предвзят как автор,) swpMVC это полнофункциональный, легкий MVC-фреймворк, вдохновленный Rails, Sinatra, Express и FuelPHP. Это тщательно документировано, и в то время как я использовал и наслаждался wp-mvc, Я хотел что-то, где модели могли бы заполнить сами представления, включая элементы управления формой для взаимодействия с указанными моделями.

Я собрал это во многом, чтобы уменьшить количество код контроллера требуется, чтобы собрать приложение поверх WordPress, и в результате получается очень быстрый и эффективный фреймворк, который работает внутри WordPress. Модели основаны на PHP Activerecord и 8 моделей включены для существующих типов данных WordPress, включая Post, PostMeta, User, UserMeta, Term и еще несколько. Моделирование данных очень легко благодаря библиотеке activerecord, и мне очень понравилось работать с этой структурой до сих пор.

также поставляется с подчеркивание PHP и PHP Quick Profiler (как показано в FuelPHP.)

RokkoMVC Это микро MVC фреймворк, построенный специально для WordPress. Проект призван упростить функциональность AJAX в приложениях WordPress, а также привнести все другие преимущества использования моделей, представлений и контроллеров в вашу тему.

недавно у меня был bash при создании плагина, который использует простую систему контроллера вида, и мне очень понравились результаты, поэтому я отделил материал шаблона к своему собственному РЕПО. Он предлагает объектно-ориентированные контроллеры, передавая переменные локально в шаблоны PHP, фрагменты шаблонов (шаблоны внутри шаблонов) и компоненты (фрагменты шаблонов со своим собственным субконтроллером). Все в двух крошечных классах!

конечно, я написал этот код, думая, что никакой другой WP разработчик рассмотрел эту проблему раньше ;-).

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