uestla/aliaser

一个简单的PHP库,用于解析和处理由USE语句定义的类别名。

1.1.0 2013-08-14 17:51 UTC

This package is auto-updated.

Last update: 2024-09-11 21:07:35 UTC


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);

// ...

享受。