webiny/class-loader

Webiny 类加载器组件

v1.6.1 2017-09-29 08:12 UTC

README

类加载器组件会自动加载您的PHP文件,前提是它们遵循某些标准命名约定。以下标准受支持

安装组件

安装组件的最佳方式是使用Composer。

composer require webiny/class-loader

有关该软件包的附加版本,请访问Packagist页面

使用方法

要使用ClassLoader,通过调用ClassLoader::getInstance()方法获取其实例。

    require_once 'Webiny/Component/ClassLoader/ClassLoader.php'

    use Webiny\Component\ClassLoader;

    ClassLoader::getInstance();

一旦您拥有了ClassLoader实例,您就可以注册映射规则。ClassLoader会自动检测您是否注册了命名空间或PEAR规则。如果前缀以下划线'_'结尾,则识别为PEAR规则。如果PSR未定义,则组件将使用PSR-4标准。所有路径都应该是绝对路径。

    ClassLoader::getInstance()->registerMap([
    										// a namespace rule (PSR-4 - default)
    										'Webiny' => realpath(dirname(__FILE__)).'/library/Webiny',
    										// a namespace rule (PSR-0)
    										'Symfony' => [
    										    'Path' => '/var/vendors/Symfony',
    										    'Psr' => 0
    										],
    										// a PEAR rule
    										'Swift_' => realpath(dirname(__FILE__)).'/library/Swift',
    										]);

如您所见,registerMap方法接受一个包含多个规则的数组。每个规则由一个前缀和一个位置组成。

为了更好的性能,您可以为ClassLoader提供缓存组件。这样做,ClassLoader将缓存路径和文件,从而提高性能。

    ClassLoader::getLoader()->registerCacheDriver($instanceOfCacheInterface);

非标准化库

如果您有一个不遵循PSR命名约定或PEAR命名约定的库,您将不得不手动定义一些设置。

让我们看看这个例子

    ClassLoader::getInstance()->registerMap([
        'Smarty_' => [
                        'Path'      => '/var/www/Vendors/Smarty/libs/sysplugins',
                        'Normalize' => false,
                        'Case'      => lower
                     ]
    ]);

您可以看到,Smarty_库被定义为具有PathNormalizeCase参数的数组。

路径

定义库的路径。

标准化

“标准化”参数告诉自动加载器是否应将类名中的下划线'_'转换为目录分隔符。例如,如果您有一个类名Smarty_Internal_Compile,则标准化路径将是Smarty/Internal/Compiler。如果您将“标准化”参数设置为“false”,则将使用原始类名。

大小写

默认情况下,自动加载器将所有类名转换为驼峰式大小写,您可以将“大小写”参数设置为“lower”,如果您希望类名在类路径中使用小写。

资源

要运行单元测试,您需要使用以下命令

$ cd path/to/Webiny/Component/ClassLoader/
$ composer.phar install
$ phpunit