darsyn / class-finder
此包已被废弃,不再维护。没有建议的替代包。
Darsyn 的类搜索器,用于搜索最终用户 PHP 类。
3.0.2
2018-12-16 18:46 UTC
Requires
- php: >=5.4
- symfony/finder: ~2.8|~3.0|~4.0
Requires (Dev)
- phpunit/phpunit: ^5
- squizlabs/php_codesniffer: @stable
- symfony/config: ~2.8|~3.0
- symfony/dependency-injection: ~2.8|~3.0
- symfony/http-kernel: ~2.8|~3.0
Suggests
- symfony/http-kernel: to search for classes inside bundles registered with AppKernel (Symfony)
This package is auto-updated.
Last update: 2021-03-09 12:34:32 UTC
README
一个用于在特定根目录和命名空间中搜索类的库。最初是为了在所有注册的 Symfony 扩展包中搜索类(类似于查找扩展包命令),它可以找到符合标准的类,而无需手动注册每个类。可以指定各种过滤器,例如
- 在子目录/命名空间中。
- 具有特定的文件扩展名。
- 以自定义后缀结尾。
- 实现或扩展父类或接口。
通常返回一个包含完全限定类名(作为字符串)的数组,但通过将 true
作为 findClasses()
方法的第四个参数传递,将返回 ReflectionClass
实例的数组。在某些情况下非常有用。
许可证
本项目采用 MIT 许可。
依赖项
本项目使用 Symfony 的 Finder 组件搜索类,并使用 PHP 的 Reflection 扩展 处理类定义。它还假设您正在使用 Composer 或类似的自动加载器。
如果您计划使用此库与 Symfony 框架一起使用,它还利用了 HTTP Kernel 组件;但是这已经是您项目的依赖项。
示例
<?php use Darsyn\ClassFinder\ClassFinder; $finder = new ClassFinder; $finder->setRootDirectory(__DIR__); $subDir = 'Models'; $suffix = 'Entity'; $parent = 'Framework\\ActiveRecordEntity'; $classes = $finder->findClasses($subDir, $suffix, $parent); foreach ($classes as $class) { echo $class . "\n"; } /** * Example Output: * * Models\UserEntity * Models\GroupEntity * Models\CustomerEntity */
Symfony 集成
<?php use Darsyn\ClassFinder\BundleClassFinder; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class DefaultController extends Controller { public function indexAction() { $kernel = $this->container->get('kernel'); $finder = new BundleClassFinder($kernel); // Find all container-aware commands across all bundles: $containerAwareCommands = $finder->findClasses( 'Command', 'Command', 'Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand' ); } }
您还可以将此库注册为服务。要做到这一点,请将以下内容添加到 app/config/services.yml
(或在使用此库的束中,使用您首选的配置格式)
services: darsyn.class_finder: class: Darsyn\ClassFinder\BundleClassFinder arguments: [ @kernel ]
注意:请记住,kernel
服务是合成的,必须在 Symfony 将正确的内核实例注入容器之前才能使用。
作者和贡献
当前作者包括
欢迎所有贡献,别忘了在拉取请求中添加您的名字!