daycry / class-finder
命名空间类查找器
v2.2.1
2023-02-14 15:17 UTC
Requires
- php: >=7.4 || ^8.0
- kint-php/kint: ^4 || ^5
Requires (Dev)
- codeigniter4/framework: ^4
- daycry/twig: ^1
- friendsofphp/php-cs-fixer: 3.6.*
- mikey179/vfsstream: ^1.6
- nexusphp/cs-config: ^3.3
- nexusphp/tachycardia: ^1.0
- phpstan/phpstan: ^1.7.1
- phpunit/phpunit: ^9.1
- rector/rector: 0.13.9
README
ClassFinder
===========
一个用于识别给定命名空间中类的简单实用工具,适用于Codeigniter 4
要求
- 应用程序正在使用Composer。
- 类可以通过Composer自动加载。
- PHP >= 7.4.0
安装
通过Composer要求它来完成安装。
$ composer require daycry/class-finder
示例
标准模式
<?php $classes = (new \Daycry\ClassFinder\ClassFinder())->getClassesInNamespace('Daycry'); /** * array( * 'TestApp1\Foo\Bar', * 'TestApp1\Foo\Baz', * 'TestApp1\Foo\Foo' * ) */ var_dump($classes);
递归模式
<?php $classes = (new \Daycry\ClassFinder\ClassFinder())->getClassesInNamespace('Daycry', \Daycry\ClassFinder\ClassFinder::RECURSIVE_MODE); /** * array( * 'TestApp1\Foo\Bar', * 'TestApp1\Foo\Baz', * 'TestApp1\Foo\Foo', * 'TestApp1\Foo\Box\Bar', * 'TestApp1\Foo\Box\Baz', * 'TestApp1\Foo\Box\Foo', * 'TestApp1\Foo\Box\Lon\Bar', * 'TestApp1\Foo\Box\Lon\Baz', * 'TestApp1\Foo\Box\Lon\Foo', * ) */ var_dump($classes);
如果您想修改配置,可以修改文件 Config/ClassFinder.php
或者
编辑配置并将其传递给构造函数
<?php $config = config('ClassFinder'); $config->finder['classMap'] = false; $config->finder['files'] = false; $classes = (new \Daycry\ClassFinder\ClassFinder($config))->getClassesInNamespace('Daycry', \Daycry\ClassFinder\ClassFinder::RECURSIVE_MODE);
您可以根据是否想搜索类、接口、特质或函数来自定义搜索引擎。
此库还集成了来自 Config 文件夹的 Autoload.php 类来执行搜索。
<?php $config = config('ClassFinder'); $config->finder['classMap'] = false; $config->finder['files'] = false; $classes = (new \Daycry\ClassFinder\ClassFinder($config))->getClassesInNamespace('App', \Daycry\ClassFinder\ClassFinder::RECURSIVE_MODE); $classes = (new \Daycry\ClassFinder\ClassFinder($config))->getClassesInNamespace('Config', \Daycry\ClassFinder\ClassFinder::RECURSIVE_MODE);
<?php $config = config('ClassFinder'); $config->finder['classMap'] = false; $config->finder['files'] = false; $classes = (new \Daycry\ClassFinder\ClassFinder($config))->getClassesInNamespace('Daycry', \Daycry\ClassFinder\ClassFinder::RECURSIVE_MODE | \Daycry\ClassFinder\ClassFinder::ALLOW_CLASSES | \Daycry\ClassFinder\ClassFinder::ALLOW_INTERFACES | \Daycry\ClassFinder\ClassFinder::ALLOW_TRAITS | \Daycry\ClassFinder\ClassFinder::ALLOW_FUNCTIONS );