Zend Framework 2 添加模块

2014年02月20日

使用Zend Framework 2 的模块(Module)功能,可以把程序的相关功能集合到一个模块中,既便于管理,又可以重复使用,减少工作量。
并且模块还可以与其他模块相连接起来,构建复杂大型系统。

添加模块可以有多种方法:

方法一:手动添加

步骤1:新建模块文件夹,这里我们将模块命名为:Sample

[root@qiais public_html]# pwd
/home/qi/public_html
[root@qiais public_html]# ls
LICENSE.txt  composer.json  composer.phar  data                 module  vendor
README.md    composer.lock  config         init_autoloader.php  public
[root@qiais public_html]# cd module/
[root@qiais module]# mkdir Sample
[root@qiais module]# 

步骤2:进入到Sample文件夹,新建模块文件:Module.php

[root@qiais module]# cd Sample/
[root@qiais Sample]# vi Module.php

Module.php中输入以下内容:

namespace Sample;
class Module 
{
}

这就是添加模块所需要的最基本要求。当然,模块添加后有很多事情需要做,手动添加暂时到此为止。

方法2: 使用ZendSkeletonModule样板

步骤一:使用git将ZendSkeletonModule拉到module文件夹,并重命名为Sample

[root@qiais module]# pwd
/home/qi/public_html/module
[root@qiais module]# git clone git://github.com/zendframework/ZendSkeletonModule.git Sample
Initialized empty Git repository in /home/qi/public_html/module/Sample/.git/
remote: Reusing existing pack: 203, done.
remote: Total 203 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (203/203), 29.86 KiB, done.
Resolving deltas: 100% (75/75), done.
[root@qiais module]# 

步骤二:编辑Sample/Module.php,将命名空间由ZendSkeletonModule改为Sample

module/Sample/Module.php
<?php

namespace ZendSkeletonModule; /*将次行改为:namespace Sample; */

use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;

class Module implements AutoloaderProviderInterface
{
    public function getAutoloaderConfig()
    {

改为如下:

module/Sample/Module.php
<?php

namespace Sample;

use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;

class Module implements AutoloaderProviderInterface
{
    public function getAutoloaderConfig()
    {

步骤三:删除以下文件夹

Sample/src/ZendSkeletonModule
Sample/view/zend-skeleton-module

方法3: zftool命令生成模块

zftool命令也许是最快最便捷的方法,但不怎么推荐,因为它会自动修改配置文件,增加的一些我们可能不知道的文件,不便于管理。而且生成的代码不符合PSR规范。