zaker/class-finder

一个可以在给定命名空间中提供类列表的库

0.5.3 2023-06-18 17:43 UTC

This package is auto-updated.

Last update: 2024-09-25 15:50:35 UTC


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支持

  • 附加功能

各种想法

  • ClassFinder::getClassesInNamespace('TestApp1\Foo', ClassFinder::RECURSIVE_MODE). 提供多层命名空间的类。 (包含v0.3-beta)

  • ClassFinder::getClassesImplementingInterface('TestApp1\Foo', 'TestApp1\FooInterface', ClassFinder::RECURSIVE_MODE). 过滤类,仅包括实现特定命名空间的类。

  • ClassFinder::debugRenderReport('TestApp1\Foo\Baz') 指导解决由于命名空间中的错误、缺少目录等导致的“找不到类”错误。将打印一个HTML报告。不适用于生产使用,但适用于调试。