sageit/phalcon-micro-annotations

Sage IT 组件用于 Phalcon - 基于注解的路由解析器

v1.00 2022-12-28 16:48 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:59 UTC


README

Logo

Phalcon Micro-Annotation

Latest Stable Version Total Downloads License PHP Version Require Phalcon Version

允许你在 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 个参数。

  1. 服务添加到的依赖注入器。
  2. 包含可选设置的 Object。

提供的示例演示了如果省略选项,将假设默认值。

将 Micro 挂载到服务

在 Micro 类内部调用

$this->getDI()->get('router')->mountMicro($this);

这会将微应用程序($this)传递给解析器,并使用解析的注解调用微挂载方法


缓存

此类支持受保护的缓存。在创建路由器服务时,您可以选择 APCuStreamMemory(不缓存)以优化使用。

指定缓存方法

在传递给 MicroRouter 的选项数组中,指定所选的适配器。

APCu

"adapter" => "apcu",
"lifetime" => 21600000,

APCu

"adapter" => "stream",
"cachedirectory" => "/app/storage/cache/annotations/"

内存

"adapter" => "memory"

技术上,Memory 是所有其他方法失败时的回退,所以任何非 APCU 或 Stream 的值都会解析为内存

保护措施

指定后,该类会在使用缓存方法之前检查所需组件的存在。这以分层的方式进行。

  1. 指定了 APCu,会检查是否已安装并启用了 APCu,如果没有,适配器将回退到 Stream
  2. 指定了 Stream(或 APCu 指定失败),会检查指定的 cachedirectory 目录是否存在,如果不存在,适配器将回退到 Memory
  3. 指定了 Memory(或回退的结果),不需要进行任何检查,每次都会在内存中完成解析。

解析

当启用缓存方法时,它们会先于迭代文件产生 I/O 调用之前进行处理。如果存在注解,则不会解析文件,并且从内存中生成路由。如果没有注解(第一次调用或清除缓存后),则从提供的 directory 解析控制器文件并添加注解。

清除缓存

包含一个公共实用程序方法,以方便在测试或发布场景下重建缓存。清除缓存取决于指定的适配器。

clearCache()

在 micro 类内部

$this->getDI()->get('router')->clearCache();

这将删除所有前缀为 _phan 的 APCu 条目或根据适配器类型删除 cachedirectory 中的所有文件。

如果依赖注入器识别为 logger 服务,则将通知记录下来,表明已清除缓存


路线图

查看公开问题,以获取建议的功能(以及已知的问题)列表。


贡献

贡献使开源社区成为一个如此神奇的学习、灵感和创造的地方。您所做的任何贡献都备受赞赏。

  1. 分支项目
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交您的更改(git commit -m '添加一些AmazingFeature'
  4. 推送到分支(git push origin feature/AmazingFeature
  5. 打开拉取请求

许可证

在MIT许可下分发。有关更多信息,请参阅LICENSE文件。


联系

Sage IT Solutions - 电子邮件

项目链接: https://github.com/SageITSolutions/phalcon-micro-annotations


致谢