dev-master
9999999-dev https://github.com/softius/resources-resolverResolve file paths and methods
MIT
The Requires
- php >=5.6.0
- container-interop/container-interop ^1.1
The Development Requires
softius resources-resolver
Wallogit.com
2017 © Pedro Peláez
Resolve file paths and methods
![Software License][ico-license]
![Coverage Status][ico-scrutinizer]
![Total Downloads][ico-downloads], (*1)
Via Composer, (*2)
``` bash $ composer require softius/resources-resolver, (*3)
## Usage The following resolvers are made available by this library. * `CallableResolver` * `FilenameResolver` ## Usage: CallableResolver It is possible to resolve the following inputs to the associated callable as it is demonstrated below. This works for static and non-static methods as well and it relies heavily for a Container to be provided. * `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']` ### Resolve a non - static method ``` PHP 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');;
``` PHP use League\Container\Container; use Softius\ResourcesResolver\CallableResolver;, (*4)
$container = new Container(); $container->add('FooClass', 'App\SomeClass');, (*5)
$resolver = new CallableResolver($container);, (*6)
$callable = $resolver->resolve('FooClass::someMethod');;, (*7)
### Resolve a static method ``` PHP use Softius\ResourcesResolver\CallableResolver; $resolver = new CallableResolver(); $callable = $resolver->resolve('App\SomeClass::someStaticMethod');
``` PHP use Softius\ResourcesResolver\CallableResolver;, (*8)
class A { public function hi() { echo 'A: Hi!'; } }, (*9)
class B extends A { public function hi() { echo 'B: Hi!'; }, (*10)
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]
}
}, (*11)
## Usage: FilenameResolver ### Resolve a filename from templates directory ``` PHP define('TEMPLATES_DIR', '...'); use Softius\ResourcesResolver\FilenameResolver; $resolver = new FilenameResolver(TEMPLATES_DIR); $filename = $resolver->resolve('path/to/template.php');
It is also possible to omit the extension and specify a global extension for all files to be resolved, like below., (*12)
``` PHP define('TEMPLATES_DIR', '...');, (*13)
use Softius\ResourcesResolver\FilenameResolver;, (*14)
$resolver = new FilenameResolver(TEMPLATES_DIR); $resolver->setExtension('php'); $filename = $resolver->resolve('path/to/template');, (*15)
Many frameworks don't use the directory separator to provide a consistent look across multiple OS. The following example uses '.' as the directory separator without file extensions ``` PHP define('TEMPLATES_DIR', '...'); use Softius\ResourcesResolver\FilenameResolver; $resolver = new FilenameResolver(TEMPLATES_DIR, '.'); $resolver->setExtension('php'); $filename = $resolver->resolve('path.to.template');
``` PHP define('TEMPLATES_DIR', '...');, (*16)
use Softius\ResourcesResolver\FilenameResolver;, (*17)
$resolver = new FilenameResolver(TEMPLATES_DIR); $resolver->useIncludePath(true); $filename = $resolver->resolve('path/to/file.php');, (*18)
## Testing ``` bash $ composer test
The MIT License (MIT). Please see License File for more information., (*19)
Resolve file paths and methods
MIT
softius resources-resolver