lucinda/framework-engine

Lucinda Framework 3.0 的 API 集成引擎


README

此 API 存储了 Lucinda Framework 3.0 的内部组件,可供更新但不允许开发者更改。其中大部分类都专注于 API 绑定,因此以下类对开发者来说更有意义:

API 完全符合 PSR-4 标准,仅需要 PHP7.1+ 解释器和 SimpleXML 扩展。它具有 100% 的单元测试覆盖率,使用 UnitTest API 而不是 PHPUnit 以提供更大的灵活性。

AbstractCacheable

这个抽象类是一个 \Lucinda\Headers\Cacheable,它绑定到 STDOUT MVC API 以实现能够为任何可缓存的请求资源生成 ETag/LastModified 头值的类的食谱。

该值将在项目与客户端浏览器之间的缓存驱动通信中使用,从而使得网站在后者没有更改的情况下,只需以 304 Not Modified 头响应而不是完整响应成为可能。

类定义了以下原型方法,开发者在扩展时必须实现:

由于绑定到 STDOUT MVC API,实现上述方法的类将有权访问以下受保护字段:

AbstractLoginThrottler

这个抽象类是一个 \Lucinda\WebSecurity\Authentication\Form\LoginThrottler,它通过 pow(2, failedAttempts-1) 秒来惩罚每次失败的登录,以抵御字典攻击。

在整个惩罚期间,登录将自动失败而无需检查数据库。连续失败的尝试越多,惩罚越大。一旦登录通过,所有惩罚都将取消。

类定义了以下原型方法,开发者在扩展时必须实现:

实现上述方法的类将有权访问以下受保护字段:

AbstractReporter

这个抽象类是一个 \Lucinda\STDERR\Reporter,它绑定到 Logging API 以根据它们的严重程度级别向日志报告错误,该级别由 exception 标签 @ stderr.xmlerror_type 属性值识别,该标签匹配 \Exception 处理的异常。

类定义了以下原型方法,开发者在扩展时必须实现:

Json

这个类是对 PHP 原生函数的面向对象封装,封装了 json 生成和执行,如果处理失败则抛出 \Lucinda\Framework\Json\Exception。类定义了以下方法,所有这些都与开发者相关:

RestController

这个抽象类是一个 \Lucinda\MVC\Controller,如果您的项目是 RESTful Web 服务 API,则可以扩展它。扩展它的类必须实现针对每个 HTTP 方法相应路由的 supports 方法。

如果使用未在匹配控制器中涵盖的方法访问路由,则抛出 \Lucinda\STDOUT\MethodNotAllowedException

与其他框架不同,Lucinda认为控制器“动作”是一种反模式,是臃肿、逻辑混乱的控制器产生的根源。只有在特定情况下,“动作”才有逻辑意义:根据调用时的HTTP方法行为不同的控制器。