微軟的MVC架構喊得紅紅火火,PHP當然也不遑多讓,網路上有很多的平臺提供MVC的功能,例如zendCodeIgniter都是相當知名的,而且還是開放源碼,拿來研究的確會讓自己功力進步不少。不過裏面的程式碼通常都非常艱澀難懂,要看懂它自己的底子一定要夠硬才成。

要用PHP達到MVC的開發架構,最重要的原理就是讓網址變成/Control/Action/Params的方式,這個對現在的網站來說非常重要,因為SEO就是喜歡這樣格式的網址,要達到這個目的有兩個重要的步驟。

第一增加一個.htaccess的檔案在根目錄,內容如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
</IfModule>

這個檔案的目的是將所有的網址全部交由給/index.php來處理,所以只要讓/index.php有處理網址的能力就行了。

$url = $_SERVER['REQUEST_URI'];
$items = explode('/',$url);
foreach($items as $key =&gt; $value) {
    if (strlen($value) == 0) unset($items[$key]);
}
$controller = array_shift($items);
$action = array_shift($items);
$params = $items;</pre>

這段程式碼就是將網址的/controller/action/params分離出來,這樣就可以指到你存放controller的php檔案,並且將它載入且執行物件的方法了。例如:

require_once "/application/controller/$controller.php";
$obj=new $controller();
$obj->$action($params);

而modal和view的原理也是差不多,就是想辦法讓你可以去載入你想要的程式碼段,把這樣類似的程式碼寫成公用函數就搞定了。

但是既然原理這麼簡單,那為甚麼人家寫的平臺那麼複雜,那就包含了很多環境設定、錯誤檢查、公用程式、不容易出錯的程式碼寫法等等的一拖拉庫的東西,誰叫你不懂要用別人寫的東西呢!

創作者介紹

人生四十宅開始 二號宅

漠哥 發表在 痞客邦 留言(0) 人氣()