kilahm/hack-class-scanner

此包已被弃用且不再维护。作者建议使用hackpack/hack-class-scanner包。

递归扫描目录以查找hack类和/或接口

v1.3.2 2015-02-25 17:45 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:41:43 UTC


README

Build Status HHVM Status

一个递归扫描目录以查找hack类的类。

安装

将以下行添加到您的composer.json文件中的require部分。

“kilahm/hack-class-scanner”: “dev-master”

然后运行composer update

使用

要使用该类,只需用要扫描的基本目录集和要忽略的目录集实例化它。

use kilahm\Scanner\ClassScanner;

$scanner = new ClassScanner(
  Set{‘directory/to/scan’, ‘other/directory’},
  Set{‘other/directory/to/ignore’}
);
$classMap = $scanner->mapClassToFile();
$classAndInterfaceMap = $scanner->mapClassOrInterfaceToFile();

然后,$classMap变量将持有Map<string,string>对象,将类名(包括完整命名空间)映射到定义类的文件。而$classAndInterfaceMap将与$classMap相同,但将包括接口和类。

过滤器

您可以根据类名或文件名过滤结果文件。一个过滤器必须是一个具有function(string) : bool签名的闭包。类过滤器的输入是包含命名空间的类名。文件过滤器的输入是包含完整路径(通过realpath)的文件名。如果所有已注册的过滤器函数对一个特定文件或类名返回true,则将扫描该文件以查找类,并且类名将分别出现在输出中。

$includes = Set{...};
$excludes = Set{...};
$scanner = new ClassScanner($includes, $excludes);
$classFilter = $className ==> preg_match(‘/pattern/’, $className);
$fileFilter = $fileName ==> preg_match(‘/pattern/’, $fileName);
$scanner->addClassNameFilter($classFilter);
$scanner->addFileNameFilter($fileFilter);
$classMap = $scanner->mapClassToFile();

假设

此类假设您遵循每个文件一个类的做法。扫描器将在找到文件中的第一个类名后停止搜索。

感谢

文件解析算法受到了HackPack/HackUnit中使用的算法的很大影响。