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 來將專案搞起來。

posted @ 2013-04-24 10:57  徐耀湘  阅读(185)  评论(0编辑  收藏  举报