ZF2系列 – Zend Framework 2 Modules概念 (Part 2)

在Zend Framework 2當中有一個很重要的觀念,
而這個觀念就是Modules,
這也是在整個網站當中最基礎的觀念,
所以今天我們就來看看Modules在Zend Framework搞什麼東西吧。

Modules簡單來說就是你的應用程式的集合,
裡面會包含Views, Controllers, Models等東西,
(請原諒我不翻譯這三個名詞,翻譯完應該更看不懂)
你可以稍微看一下下面這個架構:

在這個例子中我們是用Zend所提供的骨架Template,
因此你可以看到裡面有一個名為Application的Module,
(Application在這我們稱它為Module的namespace)
同時你應該也可以看到在src和view的目錄下也能看到Application的目錄,
嘿嘿嘿,你看得出Module的概念是怎樣嗎?

你猜得沒錯,他可以讓你去分開不同的Module在同一個專案中,
這樣在未來的原始碼管理上來說會變得比較彈性與方便,
在Zend Framework 2中有Module Manager可以管理Module (一般名稱為Module.php)
他會被放在Module的根目錄下,負責進行Module的載入與設定,
接下來我們就來看看這個Module Manager.

namespace Application;
 
use Zend\Mvc\ModuleRouteListener;
 
class Module
{
    public function onBootstrap($e)
    {
        $e->getApplication()->getServiceManager()->get('translator');
        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);
    }
 
    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }
 
    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ),
            ),
        );
    }
}

看完這段你應該馬上要緩然大悟才對,
請注意看 getConfig() 和 getAutoloaderConfig() 這兩個方法,
再回頭看看他的專案目錄結構,哎呀…原來這麼簡單喔?
沒錯,他是不是在幫你將自動讀取以及設定給設置好,
所以依照這個例子,以後我要去動用這個Module的設定,
那麼是不是去找  module.config.php 的麻煩呢?

而有關於系統性的設定(例如我要增加新的Module的話),
記得之後要去找 application.config.php 的麻煩,
千萬別找錯人囉。

好,今天的概念就到此結束,
什麼?沒有寫到程式手很癢?
那你就回去把從空的Zend Framework建起一個專案吧。

明後天我們要來加入一個新的 Controller 來將專案搞起來。

本篇發表於 PHP/Mysql 與標籤於 anistar固定網址書籤。
本文引用:
文章內容為ANISTAR BLOG所有,引用分享請以鏈結形式註明出處與原始作者。

關於 anistar

現任:台灣區 Yahoo! 專長: Objective C、iOS SDK、Android SDK、Flex 4、RIA、ActrionScript 3、HTML5、CSS3、JQuery、JQuery Mobile、C++、PHP、MySQL...等整合運用。 著作:《Run!PC雜誌》專欄作家、《CADesigner雜誌》專欄作家、《Flash CS3 Professional ActionScript 3.0 打造互動設計力與美》、《新一代互動體驗Flex+AIR程式開發》。 認證:Macromedia Certified Instructor in ColdFusion    Adobe Certified Expert in Photoshop    Adobe Certified Instructor in Flex

4 則迴響於《ZF2系列 – Zend Framework 2 Modules概念 (Part 2)

  1. 我認為越自由的 framework 反而會對 team work 造成一定的影響
    雖然自己開發上可能較隨性,也可以有較好的使用效率
    但是 teamwork 在維護起來,那是噩夢… = =a

    所以我們還是用 zend framewok

  2. 老師:

    之前我也用過半年左右的Zend Framework,
    不過最近大多使用Codeginter 因為比較Coding方式比較自由,也沒有那可怕的LIB,
    想請問一下Zend是不是比較適合中型之後的專案呢?

    • 其實不論專案大小都可以使用Zend, Framework是一個幫助你可以更專心在處理程式開發的機制, 同時也可以協助你進行專案事後的維護, 所以你可以選用一套你合手得Framework, 只是我個人比較喜歡Zend Framework罷了.

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *