coderex
  • 0
Новичок

Разработка плагина WordPress в архитектуре MVC, как?

  • 0

Я думаю, что архитектура плагина wordpress не MVC. Итак, я хочу использовать/использовать архитектуру MVC в разработке плагинов WordPress (например, cakephp, codeIgniter). Как я могу использовать их в разработке плагинов. Поддерживает ли WordPress CakePHP или другие фреймворки?

Share
  1. Вы определенно можете использовать философию MVC при разработке плагина, но было бы очень глупо пытаться включить CI или Cake в дополнение к WP.

    Например, вы можете создать плагин, используя следующую псевдоструктуру (к вашему сведению, существует множество способов построить это, в зависимости от вашей интерпретации MVC. Это всего лишь быстрый пример, который приходит на ум):

    class Plugin(){
        function __construct(){ // controller?
            run conditionals/determine query
            process model
            process view
        }
        function model(){ 
            get query from database 
            return variables
        }
        function view(){
            echo html
        }
    }
    

    Это может быть ужасным примером структуры плагина или даже MVC, но он просто иллюстрирует то, MVC architecture !== MVC frameworks что MVC можно использовать в дизайне плагина. Классы виджетов и другие функции в WP схожи, хотя и без явного разделения задач.

    • 0
  2. Вы задали сразу несколько вопросов:

    Q: Я думаю, архитектура плагина wordpress не MVC.

    О: Да, это правда. Это не MVC в смысле шаблона проектирования. Это MVC в более общем виде: Модель: Mysql, Вид: HTML/CSS, Контроллер: PHP. Главный интерфейсный контроллер — index.php, команды — HTTP-запросы. Маршрутизатор — это.htaccess (если вы используете красивые постоянные ссылки), контроллер 404 (если вы используете его) или index.php, если вы используете стандартную настройку.

    Q: Итак, я хочу использовать/использовать архитектуру MVC в разработке плагинов WordPress (например, cakephp, codeIgniter). Как я могу использовать их в разработке плагинов. Поддерживает ли WordPress CakePHP или другие фреймворки?

    A: Нет, WordPress не поддерживает CakePHP или CodeIgniter из коробки. Вы можете написать адаптер для codeIgniter или Cake, чтобы можно было повторно использовать существующий MVC (например, путем инкапсуляции HTTP-запроса и удаления косых черт из переменных запроса/суперглобальных переменных). Но вы также можете переопределить WordPress, чтобы просто запустить любое другое приложение PHP Framework, например, добавив rewriterules в.htaccess и добавив файлы php. Это просто зависит от того, что вы хотите сделать.

    • 0
  3. Архитектура плагинов WordPress сама по себе не имеет ничего общего с MVC. Но если вы хотите сделать MVC ВНУТРИ своего собственного плагина, почему бы и нет. Вы не обязаны использовать фреймворк, MVC — это концепция, которая может быть реализована без фреймворка hevay, см. http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html.

    • 0
  4. У меня был тот же вопрос некоторое время назад, и на данный момент, к сожалению, единственный способ сделать MVC в теме или плагине WordPress — это создать собственную роль.

    Вот что я сделал, и уже несколько месяцев использую его в своих плагинах и темах. Вы можете просмотреть исходный код на github здесь: https://github.com/philipwalton/PW_Framework Он называется PW_Framework и частично основан на Yii Framework, очень хорошей среде MVC для PHP.

    По своей сути PW_Framework — это быстрый и простой способ создания страниц параметров с проверкой на стороне клиента и сервера. Он обрабатывает проверку ajax, а также все проблемы безопасности WordPress (например, nonce), поэтому вы можете сосредоточить свои усилия по разработке на том, что на самом деле делает ваш плагин.

    Все, что вам нужно сделать, это определить вашу модель с атрибутами, метками атрибутов, описаниями и параметрами:

    public function data()
    {
      return array(
        'name' => array(
          'label' => 'Name',
          'default' => '',
        ),
        'email' => array(
          'label' => 'E-mail',
          'default' => '',
        ),
        'sex' => array(
          'label' => 'Sex',
          'default' => 'male',
          'options' => array( 'm' => 'Male', 'f' => 'Female'),
        ),
    
      );
    }
    

    Затем вы определяете правила проверки:

    protected function rules() {
      return array(
        array(
          'properties' => 'name, email, sex',
          'validator'=> array('PW_Validator', 'required'),
        ),
        array(
          'properties' => 'email',
          'validator'=> array('PW_Validator', 'email')
        ),
        array(
          'properties' => 'sex',
          'validator'=> array('PW_Validator', 'match'),
          'pattern' => '/^m|f$/'
        ),
      );
    }
    

    И вид будет выглядеть примерно так:

    <?php $form = new PW_Form( $model ); ?>
    <?php $form->begin_form(); ?>
      <?php $form->begin_section('Year Options'); ?>
      <ul>
        <li><?php $form->textfield( 'name' ); ?></li>
        <li><?php $form->textfield( 'email' ); ?></li>
        <li><?php $form->radio_button_list( 'sex' ); ?></li>
      </ul>
      <?php $form->end_section(); ?>
    <?php $form->end_form(); ?>
    

    Затем в контроллере вы просто пишете всю функциональность своего кода.

    Вот рабочий пример его использования в реальном времени: http://wordpress.org/extend/plugins/pw-archives.

    • 0
  5. WordPress сам по себе является фреймворком, он заботится о вещах, которые обычно покрываются фреймворком с собственным (или связанным) кодом. Ну, технически частично это фреймворк BackPress, но на самом деле он очень внутренний и не слишком актуальный.

    Расширения WordPress (плагины или темы) используют предоставленные WP API для извлечения и изменения данных. Для WP не имеет значения, какие расширения используют ваши расширения, если они используют правильный API для взаимодействия с самим WP.

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

    • 0
  6. WP MVC (фреймворк MVC для WordPress) — лучший плагин. Мы используем его сейчас, возможно, он удовлетворит ваши потребности.

    • 0
  7. Я предполагаю, что вы имеете в виду использование MVC, как это делают cakePHP и codeigniter, а не «использовать структуру MVC» для создания плагина или темы. Второй вариант потребует от пользователей загрузки используемого вами фреймворка, а также файлов расширения.

    • 0
  8. Я думаю, что опаздываю на вечеринку, но если кто-то все еще ищет ответ, я уже некоторое время работаю над шаблоном MVC для разработки плагинов WordPress. Этот шаблон предназначен для разделения проблем между Model, View и Controller.

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

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

    Вот ссылка на проект: https://github.com/sumitpore/mvc-plugin-boilerplate-for-wordpress

    • 0

Оставить ответ

You must login to add an answer.