[PHP] Zend Framework 安裝筆記教學 Appserv + Zend Framework (一)

今天在公司上班需要用到 Zend Framework 這一套 MVC 的軟體,用來開發 Google Calendar APIs,這 API 是用 Zend Framework 下去寫得,在 Google 文件 說的很清楚,那底下來介紹一下安裝過程吧,首先環境要先有 Apache + PHP + MySQL,我本身用 Appserv 懶人套件,我是用 AppServ 2.5.10 裡面包含底下:

  • Apache 2.2.8
  • PHP 5.2.6
  • MySQL 5.0.51b
  • phpMyAdmin-2.10.3 1. 先修改 apache 設定 httpd.conf
#LoadModule rewrite_module modules/mod_rewrite.so
改成 unmark 掉
LoadModule rewrite_module modules/mod_rewrite.so
修改 include_path 在 php.ini 裡面,或者是利用

set_include_path 來修改 2. 開始安裝 Zend Framework,首先去 官方網站下載,目前版本:Zend Framework 1.7.7,了解 MVC 架構。可以參考:透視 WebMVC 這篇。

  1. 資料架構:

Zend_01 (by appleboy46) 上面這張圖就是 Zend 的目錄架構圖,我們只需要注意 application,htdocs 跟 library 就可以了,底下介紹3個資料夾的個別用途: application 資料夾:裡面包含 controllers (MVC之C),models (MVC之M) 跟 views (MVC之V),Views 底下存放是要顯示的元件。 htdocs 資料夾:裡面 images (存放影像檔案),scripts (存放script檔) styles (存放CSS檔) .htaccess (配合url rewrite之檔案) index.php (bootstrap file),這個資料夾是對應到 Document root 的設定:


  ServerName zf-tutorial.localhost
  DocumentRoot /var/www/html/zf-tutorial/public
  
    AllowOverride All
  
這樣只要在網址列打入 zf-tutorial.localhost 就可以對應到 localhost,然後把網址對應IP寫入到 Linux:/etc/hosts 或者是 Windows:c:\\windows\system32\drivers\etc\hosts,library 裡面就單一個資料夾,裡面只有 Zend 這個套件,其實基本上也不用動它,升級的時厚紙需要換掉 Zend 這個資料夾即可。 接下來設定 .htaccess 跟 index.php 因為 Zend Framework 會幫忙設定簡短網址,所以我們必須要設定這兩個檔案來達到全部網址都轉向 index.php,這兩個檔案都必須放到 htdocs 資料夾裡面,底下就來說明這兩個檔案寫法。

htdocs/.htaccess

# Rewrite rules for Zend Framework
# 非 PHP 檔案不轉向到 index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
# Security: Don't allow browsing of directories
# 關閉檔案列表功能
Options -Indexes
# PHP settings
# 關閉 magic_quotes_gpc register_globals
# 打開 short_open_tag
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag short_open_tag on

htdocs/index.php

setControllerDirectory('../application/controllers');
  /*
  * 輸出程式
  */  
  $frontController->dispatch();
  
?>
上面設定好之後,就來看一個範例吧,首先看底下的圖:

Zend_02 這是一張 index 的撰寫程式的圖,裡面包含 Control name,上面這張圖說明了在 index 的首頁,包含了 add edit delete 的功能,那我們必須瞭解 Control name 的命名方式跟 Zend View 的命名放置關係,Control 的命名方式就是 {Contrl_Name}Controller.php 放置在 application/controller 裡面,那裡面包含了indexAction(),addAction(),editAction(),deleteAction() 這些功能,那對應的 html 命名方式就放在 views/scripts/{controller name}/{action_bame}.phtml 記住副檔名是 phtml,那底下是 IndexController.php 寫法。 application/controllers/IndexController.php

view->title = "My Albums";
  }
  function addAction()
  {
    $this->view->title = "Add New Album";
  }
  function editAction()
  {
    $this->view->title = "Edit Album";
  }
  function deleteAction()
  {
    $this->view->title = "Delete Album";
  }
}
?>
會發現有4個動作,分別對應4個view 的檔案:

application/views/scripts/index/index.phtml



  

escape($this->title); ?>

application/views/scripts/index/add.phtml



  

escape($this->title); ?>

application/views/scripts/index/edit.phtml



  

escape($this->title); ?>

application/views/scripts/index/delete.phtml



  

escape($this->title); ?>

這樣大致上就可以 work 了,請打入網址: index:http://localhost/index/index add:http://localhost/index/add edit:http://localhost/index/edit delete:http://localhost/index/delete 參考網站:

Zend Framework安裝 Akra’s DevNotesGetting Started with Zend Framework 酷學園php下的MVC [Zend Framework] 教學


See also