作者 主題: [教學] Zend Framework 安裝筆記教學 Appserv + Zend Framework (一)  (閱讀 5496 次)

0 會員 與 1 訪客 正在閱讀本文。

appleboy

  • 活潑的大學生
  • ***
  • 文章數: 224
    • 檢視個人資料
    • 小惡魔筆記
原文: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 的目錄架構圖,我們只需要注意 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 的設定:
代碼: [選擇]
<VirtualHost *:80>

  ServerName zf-tutorial.localhost

  DocumentRoot /var/www/html/zf-tutorial/public

  <Directory "/www/cs">

    AllowOverride All

  </Directory>

</VirtualHost>

這樣只要在網址列打入 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
代碼: [選擇]
<?php

  
/*

  * 設定 Error Report 的等級

  */  

  
error_reporting(E_ALL E_STRICT);  

  
/*

  * 設定台北時區

  */   

  
date_default_timezone_set(&#39;Asia/Taipei&#39;);  //設定時區為台北



  /*

  * 設定 include_path 固定把 library 資料夾加入 path 裡面

  */

  
define (&#39;P_S&#39;, PATH_SEPARATOR);

  
set_include_path(&#39;.&#39; .P_S .&#39;../library&#39; .P_S .&#39;../application/models/&#39; .P_S .get_include_path());



  
require_once &#39;Zend/Loader.php&#39;;

  
Zend_Loader::registerAutoload();



  
/*

  * 設定 Controller 的資料夾

  */

  
$frontController Zend_Controller_Front::getInstance();

  
$frontController->setControllerDirectory(&#39;../application/controllers&#39;);

  /*

  * 輸出程式

  */  

  
$frontController->dispatch();

  

?>
上面設定好之後,就來看一個範例吧,首先看底下的圖:

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

class IndexController extends Zend_Controller_Action

{

  function 
indexAction()

  {

    
$this->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
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

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

</head>

<body>

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

</body>

</html>

application/views/scripts/index/add.phtml
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

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

</head>

<body>

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

</body>

</html>

application/views/scripts/index/edit.phtml
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

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

</head>

<body>

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

</body>

</html>

application/views/scripts/index/delete.phtml
代碼: [選擇]
<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

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

</head>

<body>

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

</body>

</html>

這樣大致上就可以 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] 教學

Related ViewTags: php, Zend Framework

原文:Zend Framework 安裝筆記教學 Appserv + Zend Framework (一)
« 上次編輯: 2009-03-24 13:08 由 appleboy »

歡迎來到 CodeIgniter 繁體中文討論區
My Blog:小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY