zf2 getting started

1. 新建Modules

以一个名为Album的module为例,其目录结构如下(可使用zftool自动创建)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 zf2-tutorial/
     /module
         /Album
             /config
             /src
                 /Album
                     /Controller
                     /Form
                     /Model
             /view
                 /album
                     /album

为了加载和配置module,ZF2自备了一个ModuleManager。它会在指定module的根目录中(本例是module/Album)查找Module.php文件,并期望在此文件中找到名为AlbumModule的类。即是以module名为命名空间的Module类。

code in Module.php

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 namespace Album;

 use ZendModuleManagerFeatureAutoloaderProviderInterface;
 use ZendModuleManagerFeatureConfigProviderInterface;

 class Module implements AutoloaderProviderInterface, ConfigProviderInterface
 {
     public function getAutoloaderConfig()
     {
         return array(
             'ZendLoaderClassMapAutoloader' => array(
                 __DIR__ . '/autoload_classmap.php',
             ),
             'ZendLoaderStandardAutoloader' => array(
                 'namespaces' => array(
                     __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                 ),
             ),
         );
     }

     public function getConfig()
     {
         return include __DIR__ . '/config/module.config.php';
     }
 }

注:若是使用zftool生成的Album目录结构,Module.php已经创建,与上文所示不同的是没有autoload_classmap.php文件的加载,若是使用上文code,则在此目录下再新建文件autoload_classmap.php并使其返回一个空的数组。

The ModuleManager will call getAutoloaderConfig() and getConfig() automatically for us.

module专属配置文件

在module/Album/config目录下创建module.config.php文件,内容如下:

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 return array(
     'controllers' => array(
         'invokables' => array(
             'AlbumControllerAlbum' => 'AlbumControllerAlbumController',
         ),
     ),
     'view_manager' => array(
         'template_path_stack' => array(
             'album' => __DIR__ . '/../view',
         ),
     ),
 );

上文的code中可以看出返回的是一个数组,其中的每个子配置都会由ServiceMannger根据其键值传递给相应的组件。上文中的两个子配置是初始配置:controllers和view_manager。其中controllers子配置提供了本module所有的controllerde列表,就如已经配置的一样,我们将创建一个AlbumController,命名空间AlbumController。view_mannger配置的是view文件的存放路径。

原文地址:https://www.cnblogs.com/flytome/p/4270749.html