daycry/class-finder

命名空间类查找器

v2.2.1 2023-02-14 15:17 UTC

This package is auto-updated.

Last update: 2024-09-14 18:31:43 UTC


README

Donate

ClassFinder

===========

一个用于识别给定命名空间中类的简单实用工具,适用于Codeigniter 4

Build Status Coverage Status Downloads GitHub release (latest by date) GitHub stars GitHub license

要求

  • 应用程序正在使用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 );