kilahm / hack-class-scanner
v1.3.2
2015-02-25 17:45 UTC
Requires (Dev)
- hackpack/hackunit: 0.3.*
README
一个递归扫描目录以查找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中使用的算法的很大影响。