it-swarm.asia

تطوير ووردبريس البرنامج المساعد في MVC الهندسة المعمارية ، كيف؟

أعتقد ، وورد في المكونات في الهندسة المعمارية ليست MVC. لذلك أريد استخدام/تنفيذ بنية MVC في تطوير مكون WordPress الإضافي (مثل cakephp ، codeIgniter). كيف يمكنني استخدامها في تطوير plguin. هل يدعم WordPress CakePHP ، أو غيرها من الأطر؟

6
coderex

يمكنك بالتأكيد استخدام فلسفة 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 ، على الرغم من عدم الفصل الواضح بين الاهتمامات.

6
Dan Gayle

لقد طرحت أسئلة متعددة مرة واحدة:

س: أعتقد أن بنية وورد في المكونات ليست MVC.

ج: نعم ، هذا صحيح. انها ليست MVC في تحسس نمط التصميم. انها MVC في طريقة عرض أكثر عمومية: نموذج: Mysql ، عرض: HTML/CSS ، تحكم: PHP. Main Frontend Controller هو index.php ، الأوامر هي طلبات HTTP. جهاز التوجيه هو .htaccess (إذا كنت تستخدم الروابط الدائمة) ، أو جهاز التحكم 404 (إذا كنت تستخدم ذلك) أو index.php إذا كنت تستخدم الإعداد القياسي.

س: لذلك أريد استخدام/تنفيذ بنية MVC في تطوير المكوّن الإضافي WordPress (مثل cakephp ، codeIgniter). كيف يمكنني استخدامها في تطوير plguin. هل يدعم WordPress CakePHP ، أو غيرها من الأطر؟

ج: لا ، WordPress لا يدعم CakePHP أو CodeIgniter. يمكنك كتابة محول لـ codeIgniter أو Cake بحيث يمكنك إعادة استخدام MVC موجود (على سبيل المثال عن طريق تغليف طلب HTTP وإزالة الخطوط المائلة من متغيرات الطلب/superglobals). ولكن يمكنك تجاوز Wordpress أيضًا لتشغيل أي تطبيق _ PHP Framework أيضًا ، على سبيل المثال عن طريق إضافة rewriterules إلى .htaccess وإضافة ملفات php. ذلك يعتمد فقط على ما تريد القيام به.

5
hakre

إن بنية البرنامج المساعد لبرنامج WordPress بحد ذاته لا علاقة له بـ MVC. ولكن إذا كنت تريد القيام MVC ضمن البرنامج المساعد الخاص بك لماذا لا. لست ملزماً باستخدام إطار عمل ، MVC مفهوم يمكن تنفيذه بدون إطار عمل hevay راجع http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework. أتش تي أم أل

2
user310291

كان لدي نفس السؤال منذ فترة ، وفي الوقت الحالي ، وللأسف ، فإن الطريقة الوحيدة للقيام بـ 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

2
Philip Walton

يعتبر WordPress إطارًا كبيرًا لنفسه ، فهو يعتني بالأشياء التي يتم تغطيتها عادةً بواسطة إطار برمز خاص (أو مجمَّع). حسنًا ، جزء منه تقنيًا BackPress إطار لكنه في الحقيقة داخلي جدًا وغير مناسب.

تستخدم ملحقات WordPress (ملحقات أو سمات إما) WP واجهات برمجة التطبيقات لاسترداد البيانات وتعديلها. لا يهم WP ما تستخدمه الإضافات ، طالما أنه يستخدم واجهة برمجة تطبيقات مناسبة للتفاعل مع WP نفسه.

لذلك يمكنك تضمين واستخدام أي إطار أو مكتبة أو أي شيء في البرنامج المساعد الخاص بك. طالما كنت تستخدم WP API بشكل صحيح ومن المنطقي لقيود الأداء والترخيص.

1
Rarst

WP MVC (إطار عمل MVC لـ WordPress) هو أفضل مكون إضافي. نحن نستخدمها الآن ، ربما سوف تناسب احتياجاتك.

1
user71157

أعتقد أنني تأخرت في الحفلة ، لكن إذا كان أي شخص لا يزال يبحث عن إجابة ، فقد كنت أعمل على برنامج تحسين MVC لتطوير البرنامج المساعد WordPress لبعض الوقت. يهدف هذا المرجل إلى فصل الشواغل بين النموذج ، عرض & وحدة التحكم .

مع هذا النموذج ، يحصل المطور على فرصة لكتابة الفرد النموذج ، العرض & التحكم الفصول. أيضًا ، يتم تفصيل القلق بشأن ما إذا كنت تريد تحميل وحدة تحكم/طراز أم لا إلى جهاز التوجيه ، بحيث يمكن أن يركز جهاز التحكم والطراز لديك فقط على ما يفترض القيام به. وأعتقد أن هذا من شأنه أن يساعد في الحفاظ على بصمة صغيرة.

هذا ليس إطار عمل MVC كامل ، إنه مجرد قالب يسمح للمطور بكتابة التعليمات البرمجية بأسلوب MVC. لهذا السبب ، فإنه يحتوي فقط على تلك الميزات المطلوبة لبناء البرنامج المساعد بطريقة MVC - لا ORM - لا الأشياء الجيدة الإضافية - بدون منحنى تعليمي ضخم.

هنا هو الرابط لمشروع: https://github.com/sumitpore/mvc-plugin-boilerplate-for-wordpress

0
Sumit Pore

أفترض أنك تعني استخدام MVC كما تفعل cakePHP و codeigniter ، وليس 'استخدام إطار عمل MVC' لإنشاء مكون إضافي أو سمة. يتطلب الخيار الثاني من المستخدمين تنزيل الإطار الذي استخدمته بالإضافة إلى ملفات الامتداد.

0
kevtrout