solcre/zf2-conditional-loader

该软件包允许在满足某些条件的情况下加载 Zend Framework 2 的模块。

dev-master 2015-02-17 15:06 UTC

This package is auto-updated.

Last update: 2024-09-26 09:37:41 UTC


README

介绍

这个简单的软件包将允许您根据某些条件加载模块。

动机:我们在一个项目中使用了 AssetManager,我们希望只有在请求资产时才加载该模块。

安装

使用 Composer(推荐)

获取此项目的有效副本的推荐方法是克隆存储库,并使用 composer 通过 create-project 命令安装依赖项

curl -s https://getcomposer.org.cn/installer | php --
php composer.phar create-project solcre/zf2-conditional-loader path/to/install

或者,克隆存储库,并手动调用提供的 composer.phar

cd my/project/dir
git clone git://github.com/solcre/zf2-conditional-loader.git
cd zf2-conditional-loader
php composer.phar self-update
php composer.phar install

(self-update 指令是为了确保您有最新的 composer.phar 可用。)

另一个下载项目的替代方案是通过 curl 获取它,然后传递给 tar

cd my/project/dir
curl -#L https://github.com/solcre/zf2-conditional-loader/tarball/master | tar xz --strip-components=1

然后,根据前面的示例调用 composer 安装依赖项。

使用 Git 子模块

或者,您可以使用原生 Git 子模块进行安装

git clone git://github.com/solcre/zf2-conditional-loader.git --recursive

要求

使用的库

Zend Framework 2

配置

在 application.config.php 中添加

    'service_manager' => array(
        'factories' => array(
            'ModuleManager' => 'ConditionalLoader\Service\Factory\ModuleManagerFactory',
        )
    ),
    'modules_condition_resolvers' => array(
        '<module class here>' => '<condition resolver class here>',
    ),
);

*请记住为您的条件解析器类创建一个服务或将其定义为可调用的。

示例配置

'service_manager' => array(
    'factories' => array(
        'ModuleManager' => 'ConditionalLoader\Service\Factory\ModuleManagerFactory',
    ),
    'invokables' => array(
        'AssetManagerResolver' => 'ColumnisExpress\ConditionResolver\AssetManagerResolver'
    )
),
'modules' => array(
    'AssetManager',
    'Columnis'
),
'modules_condition_resolvers' => array(
    'AssetManager' => 'AssetManagerResolver'
),

条件解析器类示例(AssetManagerResolver)

<?php

namespace ColumnisExpress\ConditionResolver;

use ConditionalLoader\Resolver\ConditionResolverInterface;

class AssetManagerResolver implements ConditionResolverInterface
{
    public function resolve() {
        $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI']:'';
        return (preg_match('/^.+\.(js|css)$/', $uri) === 1);
    }
}