2012年8月13日

Zend Framework 的多模組( modules )設定

在 application 目錄下,新增 modules 目錄 (對照 application.ini 裡的設定)。
在modules 目錄下,新增各別的 modules 名稱,例如 admin,default 等。
在各別 module 目錄下(如 admin ),新增 controllers、models、views 三個目錄。
分別修改以下檔案:
開啟
\application\application.ini

加入
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" // 此目錄需對應上述實體目錄
resources.modules = ""
resources.frontController.defaultModule                 = "Default"   // 如果是 default 下的 controller 可以不用加注

開啟
\application\bootstrap.php

確認 class 名稱為:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {}

加入
    protected function _initFrontController() {
        $front = Zend_Controller_Front::getInstance();
        $front->setControllerDirectory(array(
            'default' => APPLICATION_PATH . '/modules/Default/controllers',
            'admin' => APPLICATION_PATH . '/modules/Admin/controllers'
        ));
        return $front;
    }

其中,
'default' => APPLICATION_PATH . '/modules/Default/controllers',

中的 default 為瀏覽器輸入的
http://you_web/default/index

中的 default , 而 admin 亦同,故可依自己的需求修改,後面的路徑亦需依實際路徑修改。

開啟 \application\modules\Default\bootstrap.php

確認 class 名稱為:
class Default_Bootstrap extends Zend_Application_Module_Bootstrap { }

開啟 \application\modules\Admin\bootstrap.php

確認 class 名稱為:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap { }

另外,由於 controller 如是 default 底下的 class,可以不加 default ,而其他,如本例中的 admin ,其 controller 就需要加上前綴。
例如:
\application\modules\admin\IndexController.php

中,的 class 名稱需為:
class Admin_IndexController extends Zend_Controller_Action { }

如果有其他的 controller ,亦需如此。

2012年8月3日

在 Wamp 裡設定 VHost

為了要在 Wamp 裡建立多個 Zend Framework 的專案,又不要被 ZF 專案底下的 .htaccess 影響,所以透過 VHost 的方式處理。

1. 修改 apache 設定檔,開啟 httpd.conf 檔,如果是透過 Include conf/extra/httpd-vhosts.conf 設定 VHost 的話,則開啟此一檔案。

2. 修改或加入以下代碼:

    DocumentRoot "D:\Wamp\www"
    ServerName localhost
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common



    ServerName MailParserWeb
    DocumentRoot D:\Wamp\www\MailParserWeb\public
   
        AllowOverride All
   


第一個 VirtualHost 是個留原本的 localhost 路徑,如果此一 VirtualHost 刪掉的話,都會指到後面的 VirtualHost裡。
第二個 VirtualHost 是欲增加的 Host ,其中「ServerName」名稱,需在 host 檔裡設定。

3. 開啟 Windows 裡的 host 檔,在 C:\WINDOWS\system32\drivers\etc\host ,加入以下:
127.0.0.1        MailParserWeb
 即可。

4. 如果要在 NetBenas 裡,可以直接執行,需要修改其參數。在專案名稱下按右鍵,選擇
Properties -> Run Configuration

將「Project URL: 」 修改為 「http://MailParserWeb」即可。

在 NetBeans 裡透過 PhpDocumentor2 產生 phpdoc 出現錯誤

在 NetBeans 裡按下 Generate Doc 之後,出現錯誤訊息如下:
[RuntimeException]  
Too many arguments.

由於目前暫時找不到原因,只好強迫執行,處理方式如下:
1. 建立一個批次檔,如「PhpDocMaker.bat」(建議放在專案的目錄下,如D:\Wamp\www\MailParserWeb\PhpDocMaker.bat),檔案內容如下:
phpdoc -d "D:/Wamp/www/MailParserWeb" -pp -i library/*

透過 -d 指定要產生文件的目錄;
加上 -pp 讓 private 的函數也一併產生文件檔;
加上 -i library/* 避免將 library 目錄下的文件也一併產生文件,如真的有需要,再把改一參數去掉即可。

2.  開啟 NetBeans -> Tools -> Option -> PHP -> PhpDoc,將 PhpDoc Script 所指向的檔案,改成上述的批次檔

3. 第一次執行時, NetBeans 會詢問產生的文件檔案要放置何處,故不需加上 -t 參數。

注意:
這樣的做法,會使得所有的專案都使用同一個批次檔執行,故如要應用在其他專案上時,需把目標目錄加以更改( -d )。

PhpDocumentor2 無法正常運作

PhpDocumentor2 執行時,如出現以下錯誤訊息:
Unable to find the `dot` command of the GraphViz package

先到 Graphviz 的官方網站:
http://www.graphviz.org/

下載、安裝後,在 php.ini 裡的 include_path 裡,將 Graphviz 的路徑加入即可。

2012年8月1日

用 netbeans 開發 Zend Framework Project - 設定

把 Apache、PHP、Pear、Zend Framework、PhpDocumentor2 等安裝好之後,開啟 NetBeans -> Tools -> Options
選擇 PHP 項目,在 Command Line 用 Search 就可以找到 php.exe,
Global Include Path 中,將 PHP 目錄、 Pear 目錄加入(這樣NetBeans才能找到相關Library),
Unit Testing、PhpDoc、Zend,都可以用 Search 找到對應的檔案。