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

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

6 голосов | спросил coderex 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 20 Sep 2010 11:01:07 +0400 2010, 11:01:07

7 ответов


6

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

Например, вы можете создать плагин с использованием следующей псевдоструктуры (FYI, есть много способов ее создания, в зависимости от вашей интерпретации 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 похожи, хотя без какого-либо явного разделения проблем.

ответил Dan Gayle 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 22 Sep 2010 04:30:17 +0400 2010, 04:30:17
5

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

В: Я думаю, что плагин WordPress не является MVC.

A: Да, это правда. Это не MVC в Design Pattern Sense. Это MVC в более общем виде: Model: Mysql, View: HTML /CSS, Controller: PHP. Main Frontend Controller - index.php, Команды - это HTTP-запросы. Маршрутизатор - .htaccess (если вы используете довольно постоянные ссылки), контроллер 404 (если вы используете его) или index.php, если вы используете стандартную настройку.

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

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

ответил hakre 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 22 Sep 2010 02:22:15 +0400 2010, 02:22:15
2

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

ответил user310291 20 MarpmSun, 20 Mar 2011 17:43:42 +03002011-03-20T17:43:42+03:0005 2011, 17:43:42
2

У меня был такой же вопрос некоторое время назад, и в настоящий момент, к сожалению, единственный способ сделать 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/плагины /PW-архивы

ответил Philip Walton 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 22 Sep 2011 19:44:10 +0400 2011, 19:44:10
1

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

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

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

ответил Rarst 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 20 Sep 2010 11:19:47 +0400 2010, 11:19:47
1

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

ответил user71157 25 AMpSat, 25 Apr 2015 08:21:05 +030021Saturday 2015, 08:21:05
0

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

ответил kevtrout 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 21 Sep 2010 21:47:19 +0400 2010, 21:47:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132