問題描述
我認為,wordpress plug-in 架構不是 MVC 。所以我想在 WordPress plug-in 開發中使用/做 MVC 架構 (像 cakephp,codeIgniter) 。如何在 plguin 開發中使用它們。 WordPress 是否支援 CakePHP 或其他框架?
最佳解決方案
你一定可以在開發一個外掛時使用 MVC 的理念,但是除了 WP 之外,嘗試整合 CI 或者 Cake 還是很傻的。
例如,您可以使用以下偽結構構建一個外掛 (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 中的小工具類和其他功能類似,儘管沒有任何明確的分離問題。
次佳解決方案
您一次問多個問題:
問:我認為,這個 wordpress plug-in 架構並不是 MVC 。
答:是的,是的。設計模式感覺不是 MVC 。它是一個更一般的檢視中的 MVC:Model:Mysql,View:HTML /CSS,Controller:PHP 。主要前端控制器是 index.php,命令是 HTTP 請求。路由器是.htaccess(如果你使用漂亮的永久連結),404 控制器 (如果你使用那個) 或 index.php,如果你使用標準的設定。
問:所以我想在 WordPress plug-in 開發中使用/做 MVC 架構 (像 cakephp,codeIgniter) 。如何在 plguin 開發中使用它們。 WordPress 是否支援 CakePHP 或其他框架?
A:不,Wordpress 不支援 CakePHP 或 CodeIgniter 開箱即用。您可以為 codeIgniter 或 Cake 編寫介面卡,以便您可以將 re-use 用於現有的 MVC(例如,透過封裝 HTTP 請求並從請求變數/超級頁面中刪除斜槓) 。但是,您也可以超越 Wordpress,也可以執行任何其他 PHP 框架應用程式,例如。透過新增重寫器到.htaccess 並新增 php 檔案。它只取決於你想做什麼
第三種解決方案
我曾經有同樣的問題,目前不幸的是,在 WordPress 主題或外掛中進行 MVC 的唯一方法就是自己扮演角色。
所以這就是我所做的,我已經在我的外掛和主題中使用它幾個月了。您可以在 github 上檢視原始碼:https://github.com/philipwalton/PW_Framework 它被稱為 PW_Framework,它基於 Yii 框架,這是一個非常好的 PHP 的 MVC 框架。
在核心方面,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
第四種方案
WordPress 的外掛架構本身與 MVC 無關。但是如果你想在自己的外掛中做 MVC,為什麼不這樣做。您沒有義務使用框架,MVC 是一個可以在沒有 hevay 框架的情況下實現的概念,見 http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。