zaker / class-finder
一个可以在给定命名空间中提供类列表的库
0.5.3
2023-06-18 17:43 UTC
Requires
- php: >=5.3
- ext-json: *
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ~9.0
README
一个简单的工具,用于识别给定命名空间中的类。
这个包是Stack Overflow上一个答案的改进实现,并且提供了更少的配置要求。
要求
- 应用程序使用Composer。
- 类可以通过Composer自动加载。
- PHP >= 5.3.0
安装
通过Composer要求安装。
$ composer require haydenpierce/class-finder
目前不支持其他安装方法。
支持的自动加载方法
^ 实验性。
* 计划中。
** 不计划。如果需要此功能,请提交问题。
示例
标准模式
<?php
require_once __DIR__ . '/vendor/autoload.php';
$classes = ClassFinder::getClassesInNamespace('TestApp1\Foo');
/**
* array(
* 'TestApp1\Foo\Bar',
* 'TestApp1\Foo\Baz',
* 'TestApp1\Foo\Foo'
* )
*/
var_dump($classes);
递归模式 (v0.3-beta)
<?php
require_once __DIR__ . '/vendor/autoload.php';
$classes = ClassFinder::getClassesInNamespace('TestApp1\Foo', 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);
文档
异常:
内部
未来工作
警告:在1.0.0之前,请预期错误修复 不会 回滚到旧版本。在较小的0.X.Y版本中可能引入向后不兼容的更改,其中X发生变化。
-
psr0支持
-
附加功能
各种想法
-
(包含v0.3-beta)ClassFinder::getClassesInNamespace('TestApp1\Foo', ClassFinder::RECURSIVE_MODE)
. 提供多层命名空间的类。 -
ClassFinder::getClassesImplementingInterface('TestApp1\Foo', 'TestApp1\FooInterface', ClassFinder::RECURSIVE_MODE)
. 过滤类,仅包括实现特定命名空间的类。 -
ClassFinder::debugRenderReport('TestApp1\Foo\Baz')
指导解决由于命名空间中的错误、缺少目录等导致的“找不到类”错误。将打印一个HTML报告。不适用于生产使用,但适用于调试。