zendframework 2

我想我的生活需要新的挑战

zf2整个框架里面都应用了namespace,并且他的每个模块,我们都可以根据自己的需要去命名路径,对我来说,zf2的模块化更加的清晰,对于外包来说,或许很方便.

zendframework 2

创建他,我就不说过程了,我按照自己的理解说说运行的步骤吧

View文件夹里面存放的是视图,

module:里面存放的是我们的模块,每一个模块都可以单独一个文件夹,当我们d调用模块的时候,会先找到moudel.php,--->config/module.config.php去配置相应的信息

 1 /**

 2  * This autoloading setup is really more complicated than it needs to be for most

 3  * applications. The added complexity is simply to reduce the time it takes for

 4  * new developers to be productive with a fresh skeleton. It allows autoloading

 5  * to be correctly configured, regardless of the installation method and keeps

 6  * the use of composer completely optional. This setup should work fine for

 7  * most users, however, feel free to configure autoloading however you'd like.

 8  */

 9 

10 // Composer autoloading

11 if (file_exists('./vendor/autoload.php')) {

12     $loader = include './vendor/autoload.php';

13 }

14 

15 $zf2Path = false;

16 

17 if (is_dir('./vendor/Zend')) {

18     $zf2Path = './vendor/Zend';

19 } elseif (getenv('Zend_PATH')) {      // Support for Zend_PATH environment variable or git submodule

20     $zf2Path = getenv('Zend_PATH');

21 } elseif (get_cfg_var('zend_path')) { // Support for zend_path directive value

22     $zf2Path = get_cfg_var('zend_path');

23 }

24 if ($zf2Path) {

25     if (isset($loader)) {

26         $loader->add('Zend', $zf2Path);

27     } else {

28         include $zf2Path . '/Loader/AutoloaderFactory.php';

29         Zend\Loader\AutoloaderFactory::factory(array(

30             'Zend\Loader\StandardAutoloader' => array(

31                 'autoregister_zf' => true

32             )

33         ));//自动加载

34     }

35 }

36 

37 if (!class_exists('Zend\Loader\AutoloaderFactory')) {

38     throw new RuntimeException('Unable to load Zend. Run `php composer.phar install` or define a ZF2_PATH environment variable.');

39 }
init_autoload.php
 1 /**

 2  * This makes our life easier when dealing with paths. Everything is relative

 3  * to the application root now.

 4  */

 5 chdir(__DIR__);

 6 

 7 // Decline static file requests back to the PHP built-in webserver

 8 if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {

 9     return false;

10 }

11 

12 // Setup autoloading

13 require 'init_autoloader.php';

14 

15 // Run the application!

16 Zend\Mvc\Application::init(require 'config/application.config.php')->run();

Application.php
 1 init()     
2 public static function init($configuration = array()) 3 { 4 $smConfig = isset($configuration['service_manager']) ? $configuration['service_manager'] : array(); 5 6 $listeners = isset($configuration['listeners']) ? $configuration['listeners'] : array(); 7 $serviceManager = new ServiceManager(new Service\ServiceManagerConfig($smConfig)); //调用了ServiceManager 8 $serviceManager->setService('ApplicationConfig', $configuration);写入配置文件service_manager 9 $serviceManager->get('ModuleManager')->loadModules(); 10 return $serviceManager->get('Application')->bootstrap($listeners); 11 }

run() //也在这个文件夹下面,自己可以去看看源码

全局的配置文件config/application.config.php
 1 return array(

 2     // This should be an array of module namespaces used in the application.

 3     'modules' => array(

 4         'Application',

 5         'Student',

 6     ), //模块的名字,每次添加一个模块,就要在这添加他的名字哦

 7 

 8     // These are various options for the listeners attached to the ModuleManager

 9     'module_listener_options' => array(

10         // This should be an array of paths in which modules reside.

11         // If a string key is provided, the listener will consider that a module

12         // namespace, the value of that key the specific path to that module's

13         // Module class.

14         'module_paths' => array(

15             './module',//模块的存储路径

16             './vendor',

17         ),

18         'config_cache_enabled' => false,

19         'config_cache_key' => 'module-config-cache',

20 

21         // An array of paths from which to glob configuration files after

22         // modules are loaded. These effectively override configuration

23         // provided by modules themselves. Paths may use GLOB_BRACE notation.

24         'config_glob_paths' => array(

25             'config/autoload/{,*.}{global,local}.php',//配置文件,db

26         ),

27 

28         // Whether or not to enable a configuration cache.

29         // If enabled, the merged configuration will be cached and used in

30         // subsequent requests.

31         //'config_cache_enabled' => $booleanValue,

32 

33         // The key used to create the configuration cache file name.

34         //'config_cache_key' => $stringKey,

35 

36         // Whether or not to enable a module class map cache.

37         // If enabled, creates a module class map cache which will be used

38         // by in future requests, to reduce the autoloading process.

39         //'module_map_cache_enabled' => $booleanValue,

40 

41         // The key used to create the class map cache file name.

42         //'module_map_cache_key' => $stringKey,

43 

44         // The path in which to cache merged configuration.

45         //'cache_dir' => $stringPath,

46 

47         // Whether or not to enable modules dependency checking.

48         // Enabled by default, prevents usage of modules that depend on other modules

49         // that weren't loaded.

50         // 'check_dependencies' => true,

51     ),

52 

53     // Used to create an own service manager. May contain one or more child arrays.

54     //'service_listener_options' => array(

55     //     array(

56     //         'service_manager' => $stringServiceManagerName,

57     //         'config_key'      => $stringConfigKey,

58     //         'interface'       => $stringOptionalInterface,

59     //         'method'          => $stringRequiredMethodName,

60     //     ),

61     // )

62 

63    // Initial configuration with which to seed the ServiceManager.

64    // Should be compatible with Zend\ServiceManager\Config.

65    // 'service_manager' => array(),

66 );
application.config.php
每个模块的配置文件/config/module.config.php
 1 return array(

 2     'router' => array(

 3         'routes' => array(

 4             'home' => array(

 5                 'type' => 'Zend\Mvc\Router\Http\Literal',

 6                 'options' => array(

 7                     'route'    => '/',//不同模块的route不能一样,

 8                     'defaults' => array(

 9                         'controller' => 'Application\Controller\Index', //记得修改模块名字

10                         'action'     => 'index',

11                     ),

12                 ),

13             ),

14             // The following is a route to simplify getting started creating

15             // new controllers and actions without needing to create a new

16             // module. Simply drop new controllers in, and you can access them

17             // using the path /application/:controller/:action

18             'application' => array(

19                 'type'    => 'Literal',//匹配路径的模式,在Mvc\Router\下面

20                 'options' => array(

21                     'route'    => '/application',

22                     'defaults' => array(

23                         '__NAMESPACE__' => 'Application\Controller',

24                         'controller'    => 'Index',

25                         'action'        => 'index',

26                     ),

27                 ),

28                 'may_terminate' => true,

29                 'child_routes' => array(//子路径

30                     'default' => array(

31                         'type'    => 'Segment',

32                         'options' => array(

33                             'route'    => '/[:controller[/:action]]',

34                             'constraints' => array(

35                                 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',

36                                 'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',

37                             ),

38                             'defaults' => array(

39                             ),

40                         ),

41                     ),

42                 ),

43             ),

44         ),

45     ),

46     'service_manager' => array(

47         'abstract_factories' => array(

48             'Zend\Cache\Service\StorageCacheAbstractServiceFactory',

49             'Zend\Log\LoggerAbstractServiceFactory',

50         ),

51         'aliases' => array(

52             'translator' => 'MvcTranslator',

53         ),

54     ),

55     'translator' => array(

56         'locale' => 'en_US',

57         'translation_file_patterns' => array(

58             array(

59                 'type'     => 'gettext',

60                 'base_dir' => __DIR__ . '/../language',

61                 'pattern'  => '%s.mo',

62             ),

63         ),

64     ),

65     'controllers' => array(

66         'invokables' => array(

67             'Application\Controller\Index' => 'Application\Controller\IndexController'

68         ),

69     ),

70     'view_manager' => array(

71         'display_not_found_reason' => true,

72         'display_exceptions'       => true,

73         'doctype'                  => 'HTML5',

74         'not_found_template'       => 'error/404',

75         'exception_template'       => 'error/index',

76         'template_map' => array(

77             'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',

78             'application/index/index' => __DIR__ . '/../view/application/index/index.phtml', //记得修改模块的名字啊

79             'error/404'               => __DIR__ . '/../view/error/404.phtml',

80             'error/index'             => __DIR__ . '/../view/error/index.phtml',

81         ),

82         'template_path_stack' => array(

83             __DIR__ . '/../view',

84         ),

85     ),

86    

87 );
module.config.php
Module.php

1
namespace Student; 2 3 use Zend\Mvc\ModuleRouteListener; 4 use Zend\Mvc\MvcEvent; 5 6 class Module 7 { 8 public function onBootstrap(MvcEvent $e) 9 { 10 $eventManager = $e->getApplication()->getEventManager(); 11 $moduleRouteListener = new ModuleRouteListener(); 12 $moduleRouteListener->attach($eventManager);//路径 13 } 14 15 public function getConfig() 16 { 17 return include __DIR__ . '/config/module.config.php';//调用自己的配置文件 18 } 19 20 public function getAutoloaderConfig() 21 { 22 return array( 23 'Zend\Loader\StandardAutoloader' => array( 24 'namespaces' => array( 25 __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 26 ), 27 ), 28 ); 29 } 30 }

你可能感兴趣的:(framework)