webiny /class-loader
Webiny 类加载器组件
v1.6.1
2017-09-29 08:12 UTC
Requires
- php: ^7
Requires (Dev)
- mybuilder/phpunit-accelerator: dev-master
- phpunit/phpunit: ~6
- webiny/cache: ~1.6
Suggests
- webiny/cache: Install Webiny Cache component to add caching features to ClassLoader.
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_
库被定义为具有Path
、Normalize
和Case
参数的数组。
路径
定义库的路径。
标准化
“标准化”参数告诉自动加载器是否应将类名中的下划线'_'转换为目录分隔符。例如,如果您有一个类名Smarty_Internal_Compile
,则标准化路径将是Smarty/Internal/Compiler
。如果您将“标准化”参数设置为“false”,则将使用原始类名。
大小写
默认情况下,自动加载器将所有类名转换为驼峰式大小写,您可以将“大小写”参数设置为“lower”,如果您希望类名在类路径中使用小写。
资源
要运行单元测试,您需要使用以下命令
$ cd path/to/Webiny/Component/ClassLoader/
$ composer.phar install
$ phpunit