網站製作學習誌

記錄學習製作網站的一切

利用 Zend_Tool 自訂專案建構器的 Provider (一)

先前提過,從 1.8 版之後, Zend Framework 就提供了一個 Zend_Tool 讓我們可以像 CakePHP 一樣,用命令列模式來建立專案。

但也許是 ZF 剛推出,在其他框架的專案建構器都有非常強大的功能的情況之下, ZF 仍舊僅僅提供很簡單的 project, module, controller, action 及 view 的建立功能,其他像是 model 是 schema 的建立等功能, ZF 似乎尚未完成。

註:在 ZF 1.9 提供的 Zend_Tool 原始碼中,倒是保留了許多新功能的骨架,希望未來的版本能看到它們的誕生。

不過 ZF 最大的特色:自訂一切! Zend_Tool 倒是很完整地保留了,它讓我們自己定義專案產生器的夢想有實現的可能!

接下來就讓我們來試試看吧!

設定環境

註:以下我假定大家已經依照拙作 [PHP-ZF] Zend Framework 1.8 初探所提到的安裝方式,將 ZF 1.9 安裝好了。

先在系統環境變數裡加名為 ZF_HOME 的變數,其值指向 ZF 的安裝目錄,這裡我以「 C:\ZF\ 」為例。

接著在 C:\ZF\ 下建立一個 .zf.ini 檔 (注意 zf 前面還有個 . 號) ,內容如下:

1
2
php.include_path = "C:\ZF\library"
php.error_reporting = 1

以上動作的目的是因為在 zf.php 執行的過程中,它會自動去找尋環境變數 ZF_HOME 下的 zf.ini 檔來當做執行時期的設定參考。

撰寫 Provider

然後在 C:\ZF\library 下建立一個新目錄,例如 My 。再把以下內容存為 HelloWorldProvider.php ,放在 My 目錄下:

1
2
3
4
5
6
7
8
9
10
<?php
require_once 'Zend/Tool/Project/Provider/Abstract.php';
require_once 'Zend/Tool/Project/Provider/Exception.php';
class My_HelloWorldProvider extends Zend_Tool_Project_Provider_Abstract
{
   public function say()
   {
        echo "Hello World!";
   }
}

所以現在你應該會有一個 C:\ZF\library\My\HelloWorldProvider.php 了,它只提供了一個很簡單的 say 方法 ,執行結果就是顯示「 Hello World! 」的字樣而已。

測試

首先我們要確定我們自訂的 Provider 已經能被 zf.php 找到,在命令列模式下輸入:

1
C:\>zf ?

結果如下:

1
2
3
4
5
6
7
Zend Framework Command Line Console Tool v1.9.3PL1
Usage:
    (略)
Providers and their actions:
  HelloWorld
    zf say hello-world
  (以下略)

這樣就表示我們的 Provider 被 zf.php 找到了。我們可以輸入以下執行測試看看:

1
2
C:\>zf say hello-world
Hello World!

是不是很簡單呢?

目前我對 Zend_Tool 的瞭解還不是非常深刻,但至少已經有個概念了。希望未來能對它研究得更深入些,讓後續的系列文章得以分享給大家。

Comments