uestla / aliaser
一个简单的PHP库,用于解析和处理由USE语句定义的类别名。
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
README
一个简单的PHP库,用于解析和处理由USE
语句定义的类和函数别名。
使用方法
Book.php
这里有一个实体类Book
和一些注释
namespace Model\Entities; use \DateTime; /** * @property User $author * @property DateTime $written */ class Book {} function foo() {}
foo.php
现在假设我们想要获取那些注释中定义的@property
类型的完整类名。这就是我们使用Aliaser
的地方。
$reflection = new ReflectionClass('Model\Entities\Book'); Aliaser\Container::getClass('User', $reflection); // 'Model\Entities\User' Aliaser\Container::getClass('DateTime', $reflection); // 'DateTime'
我们还可以根据给定的命名空间上下文发现完整的函数/回调名称。
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'
它还可以处理单个文件中的多个命名空间定义。
然而,解析可能相当昂贵 - 我们可以使用Nette 框架缓存
$storage = new Nette\Caching\Storages\FileStorage(__DIR__ . '/temp'); Aliaser\Container::setCacheStorage($storage); // ...
享受。