運行第一個程序
框架主要是為了提高開發效率和支持多人團隊開發而發明的。傳統的平面式開發總是讓每個軟件項目從零開始,程序員不得不重復“制造輪子”的工作;而界面(html+CSS+javascript)與程序邏輯的混雜使程序員與界面制作的角色很難分離開來,這有可能使得應用程序在其生命周期中變得無法維護。
ZF的做法是,為了提高應用程序的可維護性,它將程序的代碼分成如下三個不同的部分(通常也是獨立的文件):
模型(M):應用程序的模型部分。關心的是顯示的數據的細節。模型通常關注的是業務邏輯,以及如何從數據庫中存取數據。在具體的代碼中表現為一個一個不同的類,可以看做是一個用戶自定義的類庫。
視圖(V):視圖關心的是用戶顯示的內容,它通常是HTML。
控制器(C):控制器將模型和視圖結合起來,保證將正確的數據顯示到頁面上。
也就是說,Zend Framework使用Model-View-Controller(MVC)架構。它將程序中不同的部分獨立開來,使得應用程序的開發和維護變得更加容易。
1,ZF框架的設計思想和策略
ZF采用了前端控制器(Front Controller)設計模式,它把所有用戶的請求發送到一個中心控制點,具體做法就是所有的請求都需要通過index.php進入。然后通過index.php中的腳本把用戶請求分發到對應的控制器中,控制器負責調用模型中的邏輯和用戶界面的呈現。
2,Apache對ZF的支持
為了實現ZF的設計思想,需要Web服務器的支持。Apache服務器是通過其mod_rewrite功能來實現的。
2.1配置mod_rewrite擴展需要去掉Apache的配置文件httpd.conf中以下語句前的注釋符號#,使配置生效,即裝載mod_rewrite.so模塊。
LoadModule rewrite_module modules/mod_rewrite.so
還必須保證Apache已配置成支持.htaccess文件的模式。通常這可以通過在httpd.conf中將<Directory “C:PRogram FilesApache Software FoundationApache2.2htdocs”>
Options Indexes FollowSymLinks
#AllowOverride None
AllowOverride All
Order allow,deny
Allow from all
</Directory>
復制代碼中的AllowOverride None改成AllowOverride All來實現。如果沒有正確配置mod_rewrite及.htaccess,那么除了首頁外將不能看到任何其它的頁面。
保存配置,重啟Apache服務,使配置生效。
2.2 .htaccess文件的內容:
RewriteEngine on
RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php
意思是,讓RewriteEngine引擎啟動,并把對除過js、ico、gif、jpg、png、css等圖片、js腳本、css的請求,都發送到index.php文件中。
3,第一個程序的目錄結構
在htdocs下建立以下2個文件夾:phpchina1.com和app_phpchina1.com。
app_phpchina1.com下建立以下文件夾controllers、models、views。
這樣一來,典型的文件夾結構形如:
…htdocs
app_phpchina1.com
controllers
models
views
library
Zend
phpchina1.com
phpchina1.com文件夾下存放index.php和.htaccess文件;
Controllers存放控制器文件;
models存放控制器文件;
views存放視圖文件;
注意這只是ZF所推薦的文件夾的組織形式,但并不是必須的形式。實際項目中可以根據自己的具體情況靈活變通,這一點本教程的后面會詳細的探討。如果應用特別簡單,models和views文件夾也許也用不到,我們下面的“最簡單的ZF程序”即是如此。
4,最簡單的ZF程序:Hello PHPChina1.com!
激動人心的時刻到了,我們講運行我們的第一個ZF程序。
Index.php文件內容如下:<?php
error_reporting(E_ALL|E_STRICT);
//設定時區
date_default_timezone_set(’Asia/Shanghai’);
//指明引用文件的路徑
set_include_path(’.’ .
PATH_SEPARATOR . ‘../library/’.
PATH_SEPARATOR . ‘../App_phpchina.com/models/’.
PATH_SEPARATOR . get_include_path());
include “Zend/Loader.php”;
Zend_Loader::registerAutoload();
$fc = Zend_Controller_Front::getInstance();
$fc->setControllerDirectory(array(
“default”=>’../app_phpchina1.com/controllers’,
));
$fc->throwExceptions(true);
$fc->setParam(’noViewRenderer’, true);
$fc->setParam(’noErrorHandler’, false);
//開始運行程序
$fc->dispatch();
?>
Controllers文件夾下IndexController.php文件的內容:
<?php
class IndexController extends Zend_Controller_Action
{
function indexAction()
{
echo “Hello PHPChina1.com!”;
}
function otherAction()
{
echo “this is other Action.”;
}
}
?>
復制代碼運行:
在瀏覽器地址欄輸入http://phpchica1.com:8080回車,瀏覽器將顯示結果:
Hello PHPChina1.com!
如果看到上述信息,恭喜你,成功了!
下一節將對這里的2個文件的代碼進行詳細解釋。
新聞熱點
疑難解答