Zend Studio教程:Zend Framework 2集成(2/3)——?jiǎng)?chuàng)建和配置新的ZF2模塊(下)
Zend Studio是新一代的專業(yè)級(jí)智能PHP IDE,它旨在幫助開(kāi)發(fā)人員提高工作效率,創(chuàng)造出高品質(zhì)的PHP應(yīng)用程序!它包含了PHP開(kāi)發(fā)所必須的部件,通過(guò)一整套的編輯、調(diào)試、分析、優(yōu)化和數(shù)據(jù)庫(kù)工具,Zend Studio加速開(kāi)發(fā)周期,并簡(jiǎn)化復(fù)雜的應(yīng)用方案。
Zend Studio中的Zend Framework 2集成教程,一共有四個(gè)步驟,小編將其分為三個(gè)部分,本篇文章主要講述Zend Studio中的Zend Framework 2集成教程的第二部分下半部分內(nèi)容——使用ZF2服務(wù)定位器創(chuàng)建和注冊(cè)新服務(wù)。(查看上半部分內(nèi)容點(diǎn)擊這里)
四、使用ZF2服務(wù)定位器創(chuàng)建和注冊(cè)新服務(wù)
我們現(xiàn)在將使用Content Assist和ZF2 ServiceManager將控制器文件中的代碼重構(gòu)為新服務(wù)。
要?jiǎng)?chuàng)建新服務(wù):
1、在PHP資源管理器中,轉(zhuǎn)到module | Downloads | src,然后右鍵單擊“下載”文件夾。
2、選擇New | Class。將顯示“新建PHP類”對(duì)話框。
3、將新類命名為“DownloadsService”,并在Namespace字段中輸入“Downloads”。
4、單擊完成。在您的編輯器中添加并打開(kāi)新的PHP類。
5、輸入以下代碼:
<?php namespace Downloads; class DownloadsService { function getFilesList() { return array("download1.zip", "download2.zip"); } function getFilesPath() { return "http://..."; } function getFilesSize(){ return 50; } } ?>
6、保存文件。
7、打開(kāi)模塊的控制器文件(module | Downloads | src | Downloads | Controller | DownloadsController.php)。
8、向“indexAction”公共函數(shù)添加一個(gè)新變量:
開(kāi)始輸入“$ downloadService = $ this-> get”。
Content Assist將顯示獲取選項(xiàng)
選擇getServiceLocator并繼續(xù)輸入:
$downloadService = $this->getServiceLocator()->get('downloadsService');
9、在下面的行中,鍵入“$ downloadService->”并按Ctrl + Space以顯示Content Assist。Content Assist不顯示downloadService類中定義的任何方法,這意味著Zend Studio無(wú)法確定Service Locator應(yīng)返回的PHP對(duì)象。
10、要解決此問(wèn)題,請(qǐng)使用項(xiàng)目屬性將服務(wù)名稱映射到PHP類:
在PHP Explorer中,右鍵單擊項(xiàng)目,然后選擇“屬性”。
選擇Zend Framework | “服務(wù)定位器”,在“服務(wù)定位器”對(duì)話框中,單擊“添加”。
在“名稱”列下,輸入服務(wù)的名稱——downloadService。
在“類型”列下,鍵入“下載”,然后按Ctrl + Space。
Content Assist顯示PHP類。
選擇DownloadsService類,然后單擊“確定”。
11、返回控制器文件,在“$ downloadService->”后按Ctrl + Space以顯示Content Assist。這次,Content Assist列出了相關(guān)的PHP對(duì)象。
12、現(xiàn)在我們可以通過(guò)用服務(wù)調(diào)用替換模擬數(shù)據(jù)來(lái)完成控制器的開(kāi)發(fā)。使用Content Assist調(diào)用PHP方法:
getServiceLocator()->get('downloadsService'); return array("filesList"=> $downloadService->getFilesList(), "filePath" => $downloadService->getFilesPath(), "fileSize" => $downloadService->getFilesSize()); } public function fooAction() { // This shows the :controller and :action parameters in default route // are working when you browse to /module-specific-root/downloads/foo return array(); } }
13、保存文件。
14、在模塊配置文件中注冊(cè)服務(wù):
打開(kāi)Downloads模塊的配置文件(module | Downloads | config | module.config.php)。
在文件中的結(jié)束括號(hào)前添加一個(gè)新空白行,然后按Ctrl + Space顯示Content Assist。
選擇“service_manager”。
在“service_manager”數(shù)組中,添加一個(gè)“invokables”數(shù)組。
在第二個(gè)數(shù)組中,輸入“downloadsService”=>“Downloads \“。
Content Assist顯示DownloadsService服務(wù)。
15、選擇它,然后保存文件。
完成的代碼應(yīng)如下所示:
array( 'invokables' => array( 'Downloads\Controller\Downloads' => 'Downloads\Controller\DownloadsController', ), ), 'router' => array( 'routes' => array( 'module-name-here' => array( 'type' => 'Literal', 'options' => array( 'route' => '/download', 'defaults' => array( '__NAMESPACE__' => 'Downloads\Controller', 'controller' => 'Downloads', 'action' => 'index', ), ), 'may_terminate' => true, 'child_routes' => array( 'default' => array( 'type' => 'Segment', 'options' => array( 'route' => '/[:controller[/:action]]', 'constraints' => array( 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), 'defaults' => array( ), ), ), ), ), ), ), 'view_manager' => array( 'template_path_stack' => array( 'Downloads' => __DIR__ . '/../view', ), ), 'service_manager' => array( 'invokables' => array( 'downloadsService'=>'Downloads\DownloadsService', ), ), );
16、刷新瀏覽器。請(qǐng)注意,“下載”模塊現(xiàn)在顯示DownloadService中定義的值。
相關(guān)文章:
Zend Studio使用教程:Zend Framework 2集成(1/3)——?jiǎng)?chuàng)建和部署新的ZF2項(xiàng)目
Zend Studio教程:Zend Framework 2集成(2/3)——?jiǎng)?chuàng)建和配置新的ZF2模塊(上)
想要購(gòu)買Zend Studio正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊“咨詢?cè)诰€客服”
掃描關(guān)注慧聚IT微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊