it-swarm.com.de

Entwicklung des WordPress-Plugins in der MVC-Architektur, wie?

Ich denke, die WordPress-Plug-In-Architektur ist nicht MVC. Daher möchte ich die MVC-Architektur in der WordPress-Plug-in-Entwicklung verwenden (wie cakephp, codeIgniter). Wie kann ich sie bei der Entwicklung von Plguins verwenden? Unterstützt WordPress CakePHP oder andere Frameworks?

6
coderex

Sie könnten definitiv eine MVC-Philosophie bei der Entwicklung eines Plugins verwenden, aber es wäre wirklich dumm, zu versuchen, CI oder Cake zusätzlich zu WP zu integrieren.

Sie können beispielsweise ein Plugin mit der folgenden Pseudostruktur erstellen (zu Ihrer Information, es gibt eine Vielzahl von Möglichkeiten, dies zu erstellen, abhängig von Ihrer Interpretation von MVC. Dies ist nur das kurze Beispiel, das Ihnen in den Sinn kommt):

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

Dies mag ein schreckliches Beispiel für eine Plugin-Struktur oder sogar für MVC sein, aber es soll nur veranschaulichen, dass MVC architecture !== MVC frameworks und MVC im Plugin-Design verwendet werden können. Widget-Klassen und andere Funktionen in WP sind ähnlich, jedoch ohne explizite Trennung von Bedenken.

6
Dan Gayle

Sie haben mehrere Fragen gleichzeitig gestellt:

F: Ich denke, die WordPress-Plug-In-Architektur ist nicht MVC.

A: Ja, das stimmt. Es ist nicht MVC im Sinne von Design Pattern. Es ist MVC in einer allgemeineren Ansicht: Modell: MySQL, Ansicht: HTML/CSS, Controller: PHP. Haupt-Frontend-Controller ist index.php, Befehle sind HTTP-Anfragen. Der Router ist .htaccess (wenn Sie hübsche Permalinks verwenden), der 404-Controller (wenn Sie diesen verwenden) oder index.php, wenn Sie das Standard-Setup verwenden.

F: Ich möchte die MVC-Architektur für die Entwicklung von WordPress-Plug-ins verwenden (z. B. cakephp, codeIgniter). Wie kann ich sie bei der Entwicklung von Plguins verwenden? Unterstützt WordPress CakePHP oder andere Frameworks?

A: Nein, Wordpress unterstützt CakePHP oder CodeIgniter nicht. Sie können einen Adapter für codeIgniter oder Cake schreiben, damit Sie eine vorhandene MVC wiederverwenden können (z. B. indem Sie die HTTP-Anforderung einkapseln und die Schrägstriche aus den Anforderungsvariablen/den Superglobalen entfernen). Sie können Wordpress aber auch überschreiben, um einfach eine andere PHP Framework-Anwendung auszuführen, z. indem man dem .htaccess rewriterules hinzufügt und php files hinzufügt. Es hängt nur davon ab, was Sie tun möchten.

5
hakre

Die Plugin-Architektur von WordPress selbst hat nichts mit MVC zu tun. Aber wenn du MVC WITHIN deines eigenen Plugins machen willst, warum nicht? Sie müssen kein Framework verwenden. MVC ist ein Konzept, das ohne das hevay-Framework implementiert werden kann. Siehe http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework. html

2
user310291

Ich hatte vor einiger Zeit die gleiche Frage und im Moment war die einzige Möglichkeit, MVC in einem WordPress-Theme oder Plugin zu erstellen, die eigene Rolle.

So habe ich es gemacht, und ich benutze es seit ein paar Monaten in meinen Plugins und Themes. Sie können den Quellcode auf github hier einsehen: https://github.com/philipwalton/PW_Framework Er heißt PW_Framework und basiert lose auf dem Yii Framework, einem sehr guten MVC-Framework für PHP.

Im Kern ist PW_Framework eine schnelle und einfache Möglichkeit, Optionsseiten mit clientseitiger und serverseitiger Validierung zu erstellen. Es behandelt die Ajax-Validierung sowie alle WordPress-Sicherheitsprobleme (wie Nonce), so dass Sie Ihre Entwicklungsbemühungen auf das konzentrieren können, was Ihr Plugin tatsächlich tut.

Sie müssen lediglich Ihr Modell mit den Attributen, Attributbezeichnungen, Beschreibungen und Optionen definieren:

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

  );
}

Dann definieren Sie die Validierungsregeln:

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

Und die Ansicht würde ungefähr so ​​aussehen:

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

Dann schreiben Sie in der Steuerung einfach alle Ihre Code-Funktionen.

Hier ist ein funktionierendes Beispiel für den Live-Einsatz: http://wordpress.org/extend/plugins/pw-archives

2
Philip Walton

WordPress ist so ziemlich ein Framework für sich, es kümmert sich um Dinge, die normalerweise durch Framework mit eigenem (oder gebündeltem) Code abgedeckt werden. Nun, technisch gesehen ist ein Teil davon BackPress Framework, aber es ist wirklich sehr intern und nicht zu relevant.

WordPress-Erweiterungen (Plugins oder Themes) verwenden die bereitgestellten WP APIs, um Daten abzurufen und zu ändern. Es spielt für WP keine Rolle, was Ihre Erweiterungen verwenden, solange sie die richtige API verwenden, um mit WP selbst zu interagieren.

Grundsätzlich können Sie jedes Framework, jede Bibliothek oder was auch immer in Ihr Plugin einbinden und verwenden. Solange Sie die WP API ordnungsgemäß verwenden und dies für Leistungs- und Lizenzbeschränkungen sinnvoll ist.

1
Rarst

WP MVC (ein MVC-Framework für WordPress) ist das beste Plugin. Wir verwenden es jetzt, vielleicht wird es Ihren Bedürfnissen entsprechen.

1
user71157

Ich glaube, ich komme zu spät zur Party, aber wenn noch jemand nach einer Antwort sucht, arbeite ich seit einiger Zeit an der MVC-Boilerplate für die WordPress-Plugin-Entwicklung. Dieses Boilerplate zielt darauf ab, Bedenken zwischen Model , View & Controller zu trennen.

Mit diesem Boilerplate erhält der Entwickler die Möglichkeit, einzelne Model , View & Controller Klassen zu schreiben. Außerdem wird die Frage, ob ein Controller/Modell geladen werden soll oder nicht, an Router delegiert, sodass sich Ihr Controller & Modell nur auf das konzentrieren kann, was er tun soll. Ich glaube, dies würde dazu beitragen, den Fußabdruck klein zu halten.

Dies ist kein vollwertiges MVC-Framework, sondern lediglich eine Zusammenfassung, mit der Entwickler Code im MVC-Stil schreiben können. Aus diesem Grund enthält es nur die Funktionen, die zum Erstellen des Plugins in MVC-Weise erforderlich sind - Kein ORM - Keine zusätzlichen Extras - Keine große Lernkurve.

Hier ist der Link zu einem Projekt: https://github.com/sumitpore/mvc-plugin-boilerplate-for-wordpress

0
Sumit Pore

Ich gehe davon aus, dass Sie MVC als cakePHP verwenden und Codeigniter dies tun, und nicht "ein MVC-Framework verwenden", um ein Plugin oder Theme zu erstellen. Bei der zweiten Option müssen Benutzer das von Ihnen verwendete Framework sowie die Erweiterungsdateien herunterladen.

0
kevtrout