teknoo/east-foundation

East Foundation 是一个通用的包,用于在任何支持 PSR-11、PSR-15 或 Symfony 4+ 的框架中实现 #east 哲学(http://blog.est.voyage/phpTour2015/)。

7.7.1 2024-05-31 14:31 UTC

README

Latest Stable Version Latest Unstable Version Total Downloads License PHPStan

East Foundation 是一个通用的包,用于在任何支持 PSR 11PSR 7 或与 Symfony 6.4+ 兼容的框架中实现 #east 哲学:所有公共方法的对象必须返回 $this$this 的新实例。

此捆绑包使用 PSR 7 请求和响应,并自动进行从 Symfony 的请求和响应的转换。因此,您的控制器和服务可以独立于 Symfony。此捆绑包内部重用 Symfony 的组件来管理路由和查找要调用的控制器。它也设计成可以与其它框架一起使用。

它也可以用于工作进程

  • 定时器触发的异步任务(感谢 pcntl)。
  • 设置工作进程健康检查。
  • 提供非阻塞睡眠方法。

此库基于 Recipe 库构建,并重新定义了一些接口,以更全面地与 HTTP 上下文兼容。

  • 中间件是动作,但必须实现特定接口。
  • HTTP 工作流定义在一个可扩展的 Recipe 中。
  • Chef 成为了管理者,在请求被接受时执行工作流。
  • 适用于任何 PSR 11 框架,同时提供了 Symfony 实现。
  • 支持 PSR 15 处理器和中间件
  • 支持 PSR 20 并提供了一个 PSR-20 实现

完整的文档可在 documentation/README.md 中找到

支持此项目

此项目是免费的,并将保持免费。它完全由 EIRL 的活动支持。如果您喜欢它并帮助我维护和改进它,请毫不犹豫地在我PatreonGithub 上支持我。

谢谢 :) Richard。

致谢

EIRL Richard Déloge - https://deloge.io - 首席开发者。SASU Teknoo Software - https://teknoo.software

关于 Teknoo Software

Teknoo Software 是一家 PHP 软件 publisher,由 Richard Déloge 创建,作为 EIRL Richard Déloge 的一部分。Teknoo Software 的目标:为我们合作伙伴和社区提供一套高质量的服务或软件,分享知识和技能。

许可协议

East Foundation 采用 MIT 许可协议 - 请参阅许可证文件夹以获取详细信息。

安装 & 要求

要安装 遵循这些说明

此库需要

* PHP 8.1+
* A PHP autoloader (Composer is recommended)
* Teknoo/Immutable.
* Teknoo/States.
* Teknoo/Recipe.
* Optional: Symfony 6.4+

来自 Teknoo East Foundation 7.x 的新闻

此库需要 PHP 8.1 或更高版本,并且仅与 Symfony 6.3 或更高版本兼容

  • PHP-DI 7 或更高版本
  • 使用 DatesService 支持 PSR-20
  • 支持PSR-15,并新增Recipe Bowl类型
    • FiberHandlerBowl(以及FiberMiddlewareBowl)支持将PSR 15请求处理器添加到配方中。
    • MiddlewareBowl(以及FiberMiddlewareBowl)支持将PSR 15中间件添加到配方中。
  • 添加`Teknoo\East\Foundation\Normalizer\Object\GroupsTrait`
  • 添加一个基于定时器的伪非阻塞Sleep服务
  • 定时器触发的异步任务(感谢 pcntl)。
  • 设置工作进程健康检查。
  • 提供非阻塞睡眠方法。

来自Teknoo East Foundation 6.x的新闻

此库需要PHP 8.1或更高版本,并且仅与Symfony 6.1或更高版本兼容

  • SessionMiddleware、处理器、路由器和会话组件中,常量是最终的。
  • 对于不可变对象(Processor和路由器的结果)使用只读
  • 在主CookbookRecipeEndPoint中支持Fibers。RecipeEndPoint也接受bowl和FiberRecipeBowl
  • 移除对PHP 8.0和Symfony 5.4及以下版本的支持。

来自Teknoo East Foundation 5.x的新闻

此库需要PHP 8.0或更高版本,并且仅与Symfony 5.2或更高版本兼容

  • 迁移到PHP 8.0+
  • 移除对Symfony 4.4的支持,仅支持5.2+
  • 构造函数属性提升
  • 非捕获异常处理
  • 切换到str_contains
  • Messenger的执行器使用一个空的管理器并克隆它
  • 添加方法以配置客户端在必须发送一个缺失响应时的行为(静默或抛出异常)
  • 添加ClientInterface::mustSendAResponse
  • 添加ClientInterface::sendAResponseIsOptional
  • 如果Router返回了一个兼容的可调用者,处理器将在非静默模式下进行配置
  • 可以通过在DI中将teknoo.east.client.must_send_response设置为false来禁用此行为
  • 将ClientInterface从Teknoo\East\Foundation\Http移动到Teknoo\East\Foundation\Client
  • 添加Teknoo\East\Foundation\Client\ResultInterface
  • ClientInterface也接受ResultInterface而不是PSR的消息
  • 所有客户端实现都采用新的客户端接口
  • Symfony客户端实现支持ResultInterfaceJsonSerializable响应

来自Teknoo East Foundation 4.x的新闻

此库需要PHP 7.4或更高版本,并且仅与Symfony 4.4或更高版本兼容

  • 切换到States 4.1.9和PHPStan 0.12.79
  • 准备库以在非HTTP环境中使用
  • 使用MessageInterface而不是ServerRequestInterface
  • Cookbook和ProcessorCookbook使用BaseCookbookTrait
  • 添加仅实现PSR 11的消息
  • 添加MessageFactory
  • 更新客户端接口以使用MessageInterface而不是RequestInterface
  • 添加针对Symfony Messenger的专用配方执行器
  • 添加针对Symfony Messenger的专用客户端
  • 删除一些公共服务

来自Teknoo East Foundation 3.x的新闻

此库需要PHP 7.4或更高版本,并且仅与Symfony 4.4或更高版本兼容

  • 移除Symfony Template组件(集成已弃用至symfony)
  • 创建EngineInterface以允许创建适配任何模板引擎的适配器
  • 创建ResultInterface以允许异步模板渲染以进行回调流
  • 创建实现EngineInterface和ResultInterface的Twig Engine
  • 移除'east.controller.service'标签(未使用)
  • 添加east.endpoint.template以注入Twig引擎适配器
  • 修复服务定义
  • 完成测试
  • 将src中的通用文件夹迁移到src的根目录并移除旧版本支持

来自Teknoo East Foundation 2.x的新闻

此库需要PHP 7.4或更高版本,并且仅与Symfony 4.4或更高版本兼容

  • PHP 7.4是最小要求
  • 切换到类型属性
  • 删除一些无用的PHP DockBlocks
  • 对于整数索引数组,用"..."运算符替换array_merge
  • 支持zendframework/zend-diactoros 2.2
  • 限制为Symfony 4.4或5.+并删除一些弃用项
  • Teknoo\East\Foundation\Manager\ManagerInterfaceTeknoo\East\Foundation\Http\ClientInterface设置为Symfony的服务定义中的合成服务,以避免与Symfony 4.4的编译错误
  • 在 Symfony 的服务定义中设置 Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory 以避免与 Symfony 4.4 版本的编译错误
  • 在 QA 工具中启用 PHPStan 并禁用 PHPMD

贡献 :)

欢迎您为该项目做出贡献。 在 Github 上进行分支操作