Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 10:40
· 7 commits to main since this release

新增

  • Yii2 适配:PosterComponent(yii\base\Component)经魔术 getter 暴露 Yii::$app->poster->captcha / ->builder;Bootstrap 实现 BootstrapInterface,把 CaptchaManager 注册进 Yii::$container,控制器可直接构造注入
    • 配置经 @app 别名定位而非 cwd —— php-fpm 下 cwd 常是 web/,会让应用自己的 config/poster.php 被静默忽略、回落包内默认值
    • getBuilder() 每次返回新实例(PosterBuilder 有状态,width()/add() 会累积),Bootstrap 因此故意不注册它
  • Yii3 适配:composer.json 声明 extra.config-plugin,装包即由 yiisoft/config 自动装配 config/params.php 与 config/di.php,无需手工接线
    • 容器只放无状态服务:StorageInterface 与两个工厂。图像驱动 / CaptchaManager / PosterBuilder 一律不进容器 —— yiisoft/di 只管理共享实例,而 GdDriver 持有 $resource、ImagickDriver 持有 $imagick,共享后一次渲染会覆盖另一次的画布,RoadRunner / Swoole 常驻下还会跨请求残留。此处对齐 Hyperf 适配器既有的无状态工厂写法
    • config/params.php 只作覆盖层(默认空数组):默认值仍只有 config/poster.php 一个来源,避免字体路径、click_words 词表出现双份真相
    • storage=cache 时从容器取 Psr\SimpleCache\CacheInterface 注入池,对齐 Laravel 适配器
  • 框架适配由 4 个增至 6 个:Laravel / ThinkPHP / Webman / Hyperf / Yii2 / Yii3

文档

  • README.md 与 README_EN.md 增补 Yii2 / Yii3 框架集成章节与配置说明
  • 12 种语言的本地化 README 同步(各 +55/-5,改动形状一致),13 种语言的架构图与功能图重新生成

测试

  • 新增 tests/Adapters/,沿用仓库「只测不依赖框架的部分」的约定:Yii3 的 di.php / params.php 本身是纯数组 + 闭包,可脱离 yiisoft/config 真跑;Yii2 侧用带 class_exists 守卫的最小 stub 验证配置定位与 getter
  • 含一条回归护栏:若有状态服务被注册进容器,测试立即失败(已做变异验证,确认它真会拦住)

顺带修复

  • 图表生成器的接口层框位此前写死为 5 个($x = 64 + $i * 186),框架数增至 6 个时第 7 个框右缘算到 1348 而画布只有 1040 —— Yii2 / Yii3 会被切在画布外,且不产生任何警告。改为按最小框宽折行,N=5 时公式精确退化为原版式;已用「新生成器 + 改造前文案」跑出与已提交 SVG 逐字节一致,证明对既有版式零影响