guuspi17/class-manifest

类清单。检索实现指定接口的所有类。

1.0.0 2024-07-15 11:20 UTC

This package is auto-updated.

Last update: 2024-09-15 12:35:16 UTC


README

描述

该库允许获取指定目录中所有类/接口的列表,并具备进一步过滤和缓存保存的功能。
主要用途 - 获取实现指定接口的所有类。

安装

composer require guuspi17/class-manifest

功能

  • 在指定目录中查找类和接口;
  • 查找扩展指定类(extends)的类;
  • 查找扩展指定接口(extends)的接口;
  • 查找实现指定接口(implements)的类;
  • 按抽象类进行过滤;
  • 将数据保存到缓存中(Psr/CacheInterface 接口)。

测试

composer test

PHPCS

composer cs

基本用法

$classManifest = new \Guuspi17\ClassManifest\ClassManifest();
$classManifest->setDirForSearch(['/app/phpFiles']); // указываем директории, в которых будет происходить поиск *.php файлов.
$classManifest->setCache($fileCache); // Опционально, где $fileCache - объект кеша, реализующий Psr/CacheInterface.
$classManifest->init();

// Вывести классы, которые реализуют интерфейс NotificationInterface::class.
var_dump($classManifest->getInterfaceImplementors(NotificationInterface::class));

// Вывести классы, которые реализуют интерфейс NotificationInterface::class, исключая абстрактные классы.
var_dump($classManifest->getInterfaceImplementors(
    NotificationInterface::class, 
    [\Guuspi17\ClassManifest\Filters\WithoutAbstractClassFilter::getCode() => true]
));