zend framework2 - 通过配置类加载提高性能

来源:互联网 发布:微信摇一摇赛跑软件 编辑:程序博客网 时间:2024/06/03 19:16

Autoloader Classmap

使用classmap,就可以在初始化的时间返回一个‘类-文件’对应的array,从而加速加载类的速度。默认的类加载是使用StandardAutoloader,正则表达式来将类名字转换成文件名再加载,试想一下每次加载都要跑一下性能不高的正则匹配,速度能有多快呢

这是默认的自动加载配置src/module/<app>/Module.php

1
2
3
4
5
6
7
8
9
10
11
12
13
public function getAutoloaderConfig()
{
    returnarray(
        'Zend\Loader\StandardAutoloader'=> array(
            'namespaces'=> array(
                __NAMESPACE__ => __DIR__ .'/src/' . __NAMESPACE__,
            ),
        ),
        'Zend\Loader\ClassMapAutoloader'=> array(
            __DIR__ .'/config/autoload_classmap.php',
       ),
    );
}

将其修改成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function getAutoloaderConfig()
{
    returnarray(
        'Zend\Loader\ClassMapAutoloader'=> array(
            __DIR__ .'/config/autoload_classmap.php',
        ),
 
        'Zend\Loader\StandardAutoloader'=> array(
            'namespaces'=> array(
                __NAMESPACE__ => __DIR__ .'/src/' . __NAMESPACE__,
            ),
        ),
    );
}

然后使用ZF2自带的命令行工具生成classmap文件

1
$ php zf2/bin/classmap_generator.php -l <your-zf2-app-location> -o <your-zf2-app-location>/config

之后就会在app/config目录下生成autoload_classmap.php文件。

Template Map

和classmap类似,这个会将‘模板-文件’的对应关系变成一个array并返回,免去了转换的过程。

同理,运行如下命令

1
$ php zf2/bin/templatemap_generator.php -l -l <your-zf2-app-location> -o <your-zf2-app-location>/config

这样,template_map.php就会在app/config下生成。然后,在app/config/module.config.phpview_manager下加上以下那句话

1
2
3
'view_manager'=> array(
    'template_map'=> include __DIR__  .'/template_map.php',



0 0
原创粉丝点击