今天在公司上班需要用到 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 這篇。
- 資料架構:
上面這張圖就是 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 的設定:
這樣只要在網址列打入 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 資料夾裡面,底下就來說明這兩個檔案寫法。ServerName zf-tutorial.localhost DocumentRoot /var/www/html/zf-tutorial/public AllowOverride All
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(); ?>上面設定好之後,就來看一個範例吧,首先看底下的圖:
這是一張 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
這樣大致上就可以 work 了,請打入網址: index:http://localhost/index/index add:http://localhost/index/add edit:http://localhost/index/edit delete:http://localhost/index/delete 參考網站:escape($this->title); ?>
Zend Framework安裝 Akra’s DevNotes:Getting Started with Zend Framework 酷學園:php下的MVC [Zend Framework] 教學
See also
- 來聊聊 PHP & JavaScript & CSS 的 Coding Style
- 為什麼我選擇使用 Laravel Framework?
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- 將 wordpress 強制使用 SSL 連線
- PHP 7 vs HHVM Benchmark 比較
- Laravel 50 個小技巧 + Laravel 5.2 新功能
- Laravel Homestead 支援 MySQL 5.7 和 Node 5.0
- PHP-FIG 新網站
- Laravel Homestead 支援 PHP 7
- Laravel 5.1 is released