it-swarm.dev

WordPress Plugin vývoj v architektuře MVC, jak?

Myslím, že wordpress plug-in architektura není MVC. Takže chci používat/dělat MVC architekturu ve vývojovém prostředí WordPressu (jako cakephp, codeIgniter). Jak je mohu použít ve vývoji plguinu. Podporuje WordPress CakePHP, nebo jiné rámce?

6
coderex

Při vývoji pluginů byste určitě mohli použít filozofii MVC, ale bylo by opravdu hloupé, kdybyste se pokusili začlenit CI nebo Cake vedle WP.

Například můžete vytvořit plugin pomocí následující pseudo struktury (FYI, existuje tu spousta způsobů, jak to vytvořit, v závislosti na vaší interpretaci MVC. Toto je jen rychlý příklad, který se objeví v mysli):

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
    }
}

To může být hrozný příklad struktury pluginů, nebo dokonce MVC, ale je to prostě pro ilustraci, že MVC architecture !== MVC frameworks a že MVC může být použito v návrhu pluginu. Třídy widgetů a další funkce v celém WP jsou podobné, i když bez jakéhokoli explicitního oddělení zájmů.

6
Dan Gayle

Najednou jste požádali o více otázek:

Q: Myslím, že plug-in architektura wordpressu není MVC.

Ano, to je pravda. Není to MVC v Design Pattern Sense. Je to MVC v obecnějším pohledu: Model: Mysql, Pohled: HTML/CSS, Controller: PHP. Hlavní Frontend Controller je index.php, příkazy jsou HTTP požadavky. Směrovač je .htaccess (pokud používáte pěkně permalinks), řadič 404 (pokud ho používáte) nebo index.php, pokud používáte standardní nastavení.

Q: Takže chci používat/dělat MVC architekturu ve vývoji plug-inu WordPressu (jako cakephp, codeIgniter). Jak je mohu použít ve vývoji plguinu. Podporuje WordPress CakePHP, nebo jiné rámce?

A: Ne, Wordpress nepodporuje CakePHP nebo CodeIgniter z krabice. Můžete napsat adaptér pro kódový kód nebo Cake, abyste mohli znovu použít existující MVC (např. Zapouzdřením HTTP požadavku a odstraněním lomítek z proměnných požadavku/superglobálů). Můžete však přepsat také Wordpress, abyste mohli také spustit jakoukoliv jinou PHP Rámcovou aplikaci, např. přidáním přepisů do .htaccess a přidáním php souborů. Záleží jen na tom, co chcete dělat.

5
hakre

Architektura pluginů samotného wordpressu nemá nic společného s MVC. Ale pokud chcete dělat MVC ve vašem vlastním plugin, proč ne. Nejste povinni používat rámec, MVC je koncept, který by mohl být implementován bez rámce hevay viz http://toys.lerdorf.com/archives/38----framework-PHP-MVC-framework. html

2
user310291

Měl jsem stejnou otázku chvíli zpět, a v tuto chvíli, bohužel, jediný způsob, jak udělat MVC ve WordPress tématu nebo plugin byl role vlastní.

Takže to je to, co jsem udělal, a já jsem ji používal v mém pluginy a témata na několik měsíců. Zdroj si můžete prohlédnout zde: https://github.com/philipwalton/PW_Framework Jmenuje se PW_Framework a je volně založen na Yii Framework, velmi dobrém MVC rámci pro PHP.

V jeho jádru je PW_Framework rychlým a snadným způsobem, jak vytvořit stránky možností doplněné o ověření na straně klienta a serveru. To zvládne ajax validaci, stejně jako všechny bezpečnostní problémy WordPress (jako nonce), takže můžete soustředit své úsilí na vývoj toho, co váš plugin vlastně dělá.

Jediné, co musíte udělat, je definovat model s atributy, popisky atributů, popisy a možnostmi:

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'),
    ),

  );
}

Pak definujete pravidla ověřování:

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$/'
    ),
  );
}

A pohled bude vypadat takto:

<?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(); ?>

Pak v řadiči jednoduše zapíšete všechny funkce kódu.

Zde je příklad použití v živém používání: http://wordpress.org/extend/plugins/pw-archives

2
Philip Walton

WordPress je do značné míry rámec sám o sobě, postará se o věci, které jsou obvykle pokryty rámcem s vlastním (nebo sbaleným) kódem. Technicky je jeho součástí BackPress framework, ale je to opravdu velmi vnitřní a ne příliš relevantní.

Rozšíření aplikace WordPress (pluginy nebo motivy) slouží k poskytování a úpravě dat pomocí poskytnutých WP API. Nezáleží na WP co vaše rozšíření používá, pokud používá správné rozhraní API pro interakci s WP samotným.

Takže v podstatě můžete zahrnout a použít jakýkoliv rámec, knihovnu nebo cokoliv ve vašem pluginu. Pokud používáte WP API správně a má smysl pro omezení výkonu a licencí.

1
Rarst

WP MVC (MVC framework pro WordPress) je nejlepší plugin. Používáme ho teď, možná to bude vyhovovat vašim potřebám.

1
user71157

Myslím, že jsem pozdě na párty, ale pokud někdo stále hledá odpověď, jsem pracoval na MVC kotelna pro WordPress plugin vývoj pro nějakou dobu. Tato varná deska má za cíl oddělit obavy mezi Model , View & Controller .

S touto varnou deskou dostane vývojář šanci napsat individuální Model , View & Controller classes. Rovněž obavy, zda je třeba načíst řadič/model nebo ne, jsou přeneseny na Router , takže váš řadič a model se mohou zaměřit pouze na to, co mají dělat. Věřím, že by to pomohlo udržet stopu malou.

Nejedná se o plnohodnotný MVC Framework, je to jen varná deska umožňující vývojáři psát kód ve stylu MVC. Z tohoto důvodu má pouze ty funkce, které jsou nutné pro sestavení pluginu v MVC způsobem - No ORM - No Extra Goodies - No Huge Learning Curve.

Zde je odkaz na projekt: https://github.com/sumitpore/mvc-plugin-boilerplate-for-wordpress

0
Sumit Pore

Předpokládám, že máte na mysli použití MVC jako cakePHP a codeigniter, ne 'použití MVC framework' k vytvoření pluginu nebo tématu. Druhá možnost by vyžadovala, aby uživatelé stahovali rámec, který jste použili, a soubory rozšíření.

0
kevtrout