[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 這篇。 3. 資料架構: 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


  
  <?php echo $this->escape($this->title); ?>


  

escape($this->title); ?>

application/views/scripts/index/add.phtml


  
  <?php echo $this->escape($this->title); ?>


  

escape($this->title); ?>

application/views/scripts/index/edit.phtml


  
  <?php echo $this->escape($this->title); ?>


  

escape($this->title); ?>

application/views/scripts/index/delete.phtml


  
  <?php echo $this->escape($this->title); ?>


  

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] 教學
  • 請問一下如果要加密 php 原始碼的話,用 Zend Framework 可以辦到嗎?

    期待能有相關的教學,謝謝~

  • Pingback: [PHP] Zend 使用 Google Calendar API - 環境建立架設 | 小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY()

  • pei

    你好,
    我是位學生,我叫 pei,剛接觸到zend framwork,我下載下來後,不知道該放哪裡(appserv),我就把library放到www底下;還有include_path的地方要去php.ini修改,但我看php5資料夾內有二個php.ini-xxxx的檔案,;我把修改如下:
    Windows: “\path1;\path2”
    ;include_path = “.;c:\AppServ\www\library”
    還有對.htaccess 也不知道該放哪

    可以給我一些建議嗎?

    from 想破頭沒方向+不知道怎辦的 大學生 pei
    mail:gbhnjm999@gmail.com

  • 你可以用程式修改 path 問題,上面有提到可以用 set_include_path 喔

  • Pingback: zend framework基本设置 at en-d.cn()

  • Helper

    修改 include_path 在 php.ini 裡面,或者是利用 set_include_path 來修改, 是
    修改 include_path 的什麼??THX~~~~