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