synga / inheritance-finder
此包可以查找被扩展、由某个类实现或使用某个特性的类。
1.0.9
2016-05-08 15:35 UTC
Requires
- php: >=5.4
- nikic/php-parser: ^2.0
- symfony/finder: ~2.1|~3.0
Requires (Dev)
- phpunit/phpunit: 5.1.*
README
此包可以查找被扩展、实现或使用某个特性的类。它构建一个缓存并使用它来查找所需的文件。
##使用方法
$config = new \Synga\InheritanceFinder\File\FileConfig();
$config->setApplicationRoot(__DIR__);
$config->setCacheDirectory(__DIR__);
$inheritanceFinder = Synga\InheritanceFinder\InheritanceFinderFactory::getInheritanceFinder($config);
$inheritanceFinder->findExtends('SomeNamespace\OtherNamespacePath\Class');
现在它将在你的ApplicationRoot
目录中查找所有继承自类SomeNamespace\OtherNamespacePath\Class
的类
##可能的选项
findClass('完整的命名空间')
- 可以在指定目录中定位具有给定命名空间的文件findExtends('完整的命名空间')
- 可以在指定目录中定位从给定类继承的多个类findImplements('完整的命名空间')
- 可以在指定目录中定位实现或继承给定接口的多个类findTraitUse('完整的命名空间')
- 可以在指定目录中定位使用给定特性的多个类findMultiple('类 [字符串或字符串数组]', '接口 [字符串或字符串数组]', '特性 [字符串或字符串数组]')
- 可以一次性定位多个类,它使用上述方法。
##致谢
- 目前此包无法处理一个文件中的多个类。我将在不久的将来尝试修复这个问题。
- 第一次运行会比较慢,因为它正在索引项目根目录中的所有文件。我在想一种方法来使其更快。我计划使用react php来实现这一点,这样我们就可以使用多个进程。
- 不要在生产环境中使用此代码(你可以用它来为生产环境构建文件缓存)。性能结果强烈依赖于你的硬件。