uestla / aliaser
Simple PHP library for parsing and handling class aliases defined by USE statements.
1.1.0
2013-08-14 17:51 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- php: >=5.4.0
- nette/nette: 2.0.*
- nette/tester: @dev
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Simple PHP library for parsing and handling class and function aliases defined by USE statements.
Usage
Book.php
Here we have an entity class Book with some annotations:
namespace Model\Entities; use \DateTime; /** * @property User $author * @property DateTime $written */ class Book {} function foo() {}
foo.php
And now let's say we would like to take those annotations and get the full class name of those @property types defined. And that's where we'll use Aliaser:
$reflection = new ReflectionClass('Model\Entities\Book'); Aliaser\Container::getClass('User', $reflection); // 'Model\Entities\User' Aliaser\Container::getClass('DateTime', $reflection); // 'DateTime'
We can discover full function/callback name according to given namespace context as well.
Aliaser\Container::getCallback('DateTime::format', $reflection); // 'DateTime::format' Aliaser\Container::getCallback('User::getName', $reflection); // 'Model\Entities\User::getName' Aliaser\Container::getCallback('foo', $reflection); // 'Model\Entities\foo'
It handles multiple namespace definitions in a single file as well.
However, parsing can be quite expensive - we can use a Nette Framework Cache:
$storage = new Nette\Caching\Storages\FileStorage(__DIR__ . '/temp'); Aliaser\Container::setCacheStorage($storage); // ...
Enjoy.