dflydev / psr0-resource-locator
PSR-0 资源定位器
dev-master / 1.0.x-dev
2014-07-16 21:18 UTC
Requires
- php: >=5.3.3
- dflydev/psr0-resource-locator-implementation: 1.0.*
This package is auto-updated.
Last update: 2024-08-29 03:26:14 UTC
README
通过使用PSR-0映射定位命名空间路径的资源。
相对于同一包内的类定位资源可以通过__DIR__.'/../Resources'
实现。这种方法的一个缺点是它仅适用于目标资源在同一包内的情况。
本项目旨在允许从任何命名空间定位资源,无论目标目录是否在同一包内。
使用“namespaceish”而不是“namespace”,因为这应该理解为我们在超载PSR-0约定来查找文件而不是PHP代码。实际上,我们可能经常在实际上并不是命名空间的命名空间下查找目录。
需求
- PHP 5.3+
- PSR-0 资源定位器实现
- Composer — dflydev/psr0-resource-locator-composer
安装
此库可以通过Composer安装。
用法
以下是一个使用Composer PSR-0资源定位器实现(dflydev/psr0-resource-locator-composer)的示例。
<?php use Dflydev\Psr0ResourceLocator\Composer\ComposerResourceLocator; $resourceLocator = new ComposerResourceLocator; // Search all PSR-0 namespaces registered by Composer // to find the first directory found looking like: // "/Vendor/Project/Resources/mappings" $mappingDirectory = $resourceLocator->findFirstDirectory( 'Vendor\Project\Resources\mappings' ); // Search all PSR-0 namespaces registered by Composer // to find all templates directories looking like: // "/Vendor/Project/Resources/templates" $templateDirs = $resourceLocator->findDirectories( 'Vendor\Project\Resources\templates', );
在这些示例中使用Resources
并不意味着只能找到/Resources/
路径。实现应能够找到任何目录/目录,只要它们遵循PSR-0命名指南并且已注册映射。
注意事项
请注意以下规则
- 只有实际存在的资源才会被返回。
- 检查命名空间顺序将由底层实现确定。然而,建议实现首先搜索更具体的命名空间前缀。也就是说,如果两者都已注册,则应先检查
Foo\Bar\Baz
而不是Foo\Bar
。
了解实现
Composer — dflydev/psr0-resource-locator-composer
Composer PSR-0资源定位器实现利用dflydev/composer-autoload定位在运行时使用的有效Composer自动加载器,并访问其命名空间映射。
对于任何使用Composer的项目,这就是您要查找的实现。
实现指南
确保首先搜索更具体的命名空间前缀。也就是说,如果两者都已注册,则应先检查Foo\Bar\Baz
而不是Foo\Bar
。
许可
MIT,见LICENSE。
社区
如果您有问题或想帮忙,请加入irc.freenode.net上的#dflydev频道。
非原创
基于Spring Framework的classpath:
概念。