sageit / phalcon-micro-annotations
Sage IT 组件用于 Phalcon - 基于注解的路由解析器
Requires
- php: >=7.0
- ext-phalcon: 4.* || 5.*
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-29 06:14:59 UTC
README

Phalcon Micro-Annotation
允许你在 Phalcon Micro 应用中使用注解进行路由。虽然内置的基于注解的路由器类适用于完整的 Phalcon 应用程序,但 Micro 使用不同的挂载方法,且不支持此功能。Micro-Annotation 路由器利用内置的 Micro 挂载方法,同时允许使用您选择的缓存方法进行注解解析。
目录
关于项目
使用工具
安装
Git
git clone https://github.com/SageITSolutions/phalcon-micro-annotations.git
Composer
composer require sageit/phalcon-micro-annotations
使用
该项目包含一个扩展的 Router 类,该类紧密遵循 Phalcon 5 命名空间约定。一旦在微应用程序中添加了服务,就可以轻松利用它。
创建服务(示例)
namespace App\Service; class Router implements \Phalcon\Di\ServiceProviderInterface { public function register(\Phalcon\Di\DiInterface $di): void { $di->setShared( 'router', function () use ($di) { return new \Phalcon\Mvc\Router\Annotations\MicroRouter($di, (object) [ "adapter" => "apcu", "directory" => "app/controllers/", "namespace" => "App\Controllers", "lifetime" => 21600000, "cachedirectory" => "/app/storage/cache/annotations/" ]); } ); } }
在创建服务时,MicroRouter 需要 2 个参数。
- 服务添加到的依赖注入器。
- 包含可选设置的 Object。
提供的示例演示了如果省略选项,将假设默认值。
将 Micro 挂载到服务
在 Micro 类内部调用
$this->getDI()->get('router')->mountMicro($this);
这会将微应用程序($this
)传递给解析器,并使用解析的注解调用微挂载方法
缓存
此类支持受保护的缓存。在创建路由器服务时,您可以选择 APCu
、Stream
或 Memory
(不缓存)以优化使用。
指定缓存方法
在传递给 MicroRouter 的选项数组中,指定所选的适配器。
APCu
"adapter" => "apcu", "lifetime" => 21600000,
APCu
"adapter" => "stream", "cachedirectory" => "/app/storage/cache/annotations/"
内存
"adapter" => "memory"
技术上,Memory
是所有其他方法失败时的回退,所以任何非 APCU 或 Stream 的值都会解析为内存
保护措施
指定后,该类会在使用缓存方法之前检查所需组件的存在。这以分层的方式进行。
- 指定了
APCu
,会检查是否已安装并启用了 APCu,如果没有,适配器将回退到 Stream - 指定了
Stream
(或 APCu 指定失败),会检查指定的cachedirectory
目录是否存在,如果不存在,适配器将回退到 Memory - 指定了
Memory
(或回退的结果),不需要进行任何检查,每次都会在内存中完成解析。
解析
当启用缓存方法时,它们会先于迭代文件产生 I/O 调用之前进行处理。如果存在注解,则不会解析文件,并且从内存中生成路由。如果没有注解(第一次调用或清除缓存后),则从提供的 directory
解析控制器文件并添加注解。
清除缓存
包含一个公共实用程序方法,以方便在测试或发布场景下重建缓存。清除缓存取决于指定的适配器。
clearCache()
在 micro 类内部
$this->getDI()->get('router')->clearCache();
这将删除所有前缀为 _phan
的 APCu 条目或根据适配器类型删除 cachedirectory
中的所有文件。
如果依赖注入器识别为 logger
服务,则将通知记录下来,表明已清除缓存
路线图
查看公开问题,以获取建议的功能(以及已知的问题)列表。
贡献
贡献使开源社区成为一个如此神奇的学习、灵感和创造的地方。您所做的任何贡献都备受赞赏。
- 分支项目
- 创建您的功能分支(
git checkout -b feature/AmazingFeature
) - 提交您的更改(
git commit -m '添加一些AmazingFeature'
) - 推送到分支(
git push origin feature/AmazingFeature
) - 打开拉取请求
许可证
在MIT许可下分发。有关更多信息,请参阅LICENSE
文件。
联系
Sage IT Solutions - 电子邮件
项目链接: https://github.com/SageITSolutions/phalcon-micro-annotations