softius / resources-resolver
解析文件路径和方法
dev-master / 1.0.x-dev
2016-06-10 19:35 UTC
Requires
- php: >=5.6.0
- container-interop/container-interop: ^1.1
Requires (Dev)
- league/container: ^2.2
- phpunit/phpunit: ^5.0
This package is auto-updated.
Last update: 2024-09-14 04:26:31 UTC
README
安装
通过Composer
$ composer require softius/resources-resolver
用法
该库提供了以下解析器:
CallableResolver
FilenameResolver
用法:CallableResolver
可以将以下输入解析为相关的可调用项,如下所示。这同样适用于静态和非静态方法,并且高度依赖于提供容器。
App\GreetingController::helloAction
to[instance of App\GreetingController, 'helloAction']
::helloAction
to[instance of calling class, 'helloAction']
parent::helloAction
to[parent instance of calling class, 'helloAction']
App\SomeClass::someStaticMethod
to['App\SomeClass', 'someStaticMethod']
解析非静态方法
use League\Container\Container; use Softius\ResourcesResolver\CallableResolver; $container = new Container(); $container->add('App\SomeClass'); $resolver = new CallableResolver($container); $callable = $resolver->resolve('App\SomeClass::someMethod');;
使用类别名解析方法
use League\Container\Container; use Softius\ResourcesResolver\CallableResolver; $container = new Container(); $container->add('FooClass', 'App\SomeClass'); $resolver = new CallableResolver($container); $callable = $resolver->resolve('FooClass::someMethod');;
解析静态方法
use Softius\ResourcesResolver\CallableResolver; $resolver = new CallableResolver(); $callable = $resolver->resolve('App\SomeClass::someStaticMethod');
使用父类或self解析
use Softius\ResourcesResolver\CallableResolver; class A { public function hi() { echo 'A: Hi!'; } } class B extends A { public function hi() { echo 'B: Hi!'; } public function test() { $resolver = new CallableResolver(); $callable = $resolver->resolve('::hi'); // returns [B, hi] $callable = $resolver->resolve('self::hi'); // returns [B, hi] $callable = $resolver->resolve('parent::hi'); // returns [A, hi] } }
用法:FilenameResolver
从模板目录解析文件名
define('TEMPLATES_DIR', '...'); use Softius\ResourcesResolver\FilenameResolver; $resolver = new FilenameResolver(TEMPLATES_DIR); $filename = $resolver->resolve('path/to/template.php');
也可以省略扩展名,并为所有要解析的文件指定全局扩展名,如下所示。
define('TEMPLATES_DIR', '...'); use Softius\ResourcesResolver\FilenameResolver; $resolver = new FilenameResolver(TEMPLATES_DIR); $resolver->setExtension('php'); $filename = $resolver->resolve('path/to/template');
许多框架不使用目录分隔符以在多个操作系统之间提供一致的视图。以下示例使用'.'作为目录分隔符,而不使用文件扩展名
define('TEMPLATES_DIR', '...'); use Softius\ResourcesResolver\FilenameResolver; $resolver = new FilenameResolver(TEMPLATES_DIR, '.'); $resolver->setExtension('php'); $filename = $resolver->resolve('path.to.template');
从包含路径解析文件名
define('TEMPLATES_DIR', '...'); use Softius\ResourcesResolver\FilenameResolver; $resolver = new FilenameResolver(TEMPLATES_DIR); $resolver->useIncludePath(true); $filename = $resolver->resolve('path/to/file.php');
测试
$ composer test
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。