tatter / handlers
处理器发现与管理,适用于CodeIgniter 4
资助包维护!
tattersoftware
paypal.me/tatter
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- codeigniter4/framework: ^4.1
- tatter/tools: ^2.0
This package is auto-updated.
Last update: 2024-09-18 02:44:05 UTC
README
处理器发现与管理,适用于CodeIgniter 4
快速开始
- 使用Composer安装:
> composer require tatter/handlers
- 创建一个工厂来识别您的处理器
- 从任何命名空间发现类:
$widgets = WidgetFactory::findAll();
功能
处理器 允许开发者在所有命名空间中定义和发现预定类型的类;它基本上是一个无数据库的“模型”。
安装
通过Composer轻松安装,利用CodeIgniter 4的自动加载功能,并始终保持最新状态
composer require tatter/handlers
或者,通过下载源文件并将其添加到 app/Config/Autoload.php 中来手动安装。
配置(可选)
可以通过扩展其配置文件来更改库的默认行为。将 examples/Handlers.php 复制到 app/Config/,并按照注释中的说明进行操作。如果 app/Config 中没有找到配置文件,则库将使用自己的配置。
用法
处理器 使用相对路径来发现包含处理器类的文件。在您的项目或模块中创建一个新文件夹,例如 app/Widgets/ 或 src/Reports。
兼容性
为了使您的类能够被发现为处理器,您的类需要有一致的类型(类或接口)并通过类常量 HANDLER_ID
提供唯一的ID。
处理器 将通过此处理器ID解析类扩展,因此如果您想使应用程序“替换”另一个命名空间中的处理器,则只需扩展原始类并保留 HANDLER_ID
常量即可。
工厂
创建处理器类后,您需要一个工厂,该工厂提供查找路径和预期的类或接口来识别处理器。创建一个扩展 BaseFactory
的新类
<?php namespace App\Factories; use App\Interfaces\WidgetInterface; use Tatter\Handlers\BaseFactory; class WidgetFactory extends BaseFactory { public const HANDLER_PATH = 'Widgets'; public const HANDLER_TYPE = WidgetInterface::class; }
然后,您可以使用 BaseFactory
方法定位所有处理器类或通过其ID定位特定处理器
use App\Factories\WidgetFactory; // Iterate through all discovered handlers foreach (WidgetFactory::findAll() as $class) { $widget = new $class($param1, $param2); $widget->display(); } // ... or get a single handler by specifying its ID $class = WidgetFactory::find('FancyHandler'); (new $class)->display();
缓存
处理器 会扫描所有命名空间来发现相关的类。这种分布式文件系统读取在大项目中可能会很昂贵,因此 处理器 将根据配置文件中设置的持续时间(默认:一天)缓存结果。您可以通过将 $cacheDuration
设置为 null
来禁用缓存。
通常预先缓存处理器是一个好主意,这样就不会在页面实际加载时进行文件系统搜索。此库包括 FactoryFactory
,一个“发现其他工厂的工厂”。如果您希望您的工厂类可以被 FactoryFactory
发现,并且其处理器可以自动缓存,则将您的工厂类放在 Factories 子文件夹中,并像任何其他处理器一样提供 HANDLER_ID
常量。
命令
为了帮助 FactoryFactory
发现您的工厂及其处理器,此库包括两个命令,可以预先缓存所有处理器类并清除缓存值
# Discovers and caches all compatible factories and their handlers php spark handlers:cache # Clears all cached factories and handlers php spark handlers:clear
设置cron作业,每隔小于配置 $cacheDuration
的时间间隔运行 spark handlers:cache
,以确保您的处理器始终可用。
示例
这里有一些其他库,它们实现了自己的Factory类和一组处理器。浏览它们的代码,了解您如何在自己的项目中使用 处理器。
- Tatter\Thumbnails:模块化缩略图生成,适用于CodeIgniter 4
- Tatter\Exports:模块化文件导出,适用于CodeIgniter 4