chevere / action
面向对象的Parameter处理规范
Requires
- php: ^8.1
- chevere/message: ^1.0.0
- chevere/parameter: ^1.0.0
Requires (Dev)
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.5
- symplify/easy-coding-standard: ^11.1
README
🔔 订阅通讯,不错过Chevere的任何更新。
摘要
Action提供了一种面向对象的规范,用于处理Parameter。
安装
Action通过Packagist提供,仓库源码位于chevere/action。
composer require chevere/action
快速开始
使用ActionInterface,通过使用Action trait或扩展Action 抽象来实现。
创建操作
使用ActionTrait
使用ActionTrait创建操作。
use Chevere\Action\Interfaces\ActionInterface; use Chevere\Action\Traits\ActionTrait; class MyAction implements ActionInterface { use ActionTrait; // ... }
扩展Action
通过扩展Action来创建Action。
use Chevere\Action\Action; class MyAction extends Action { // ... }
主方法
使用main
方法来确定操作的主要逻辑。使用来自chevere/parameter的属性在参数和方法返回值上添加验证规则。
- 在验证规则之前
class MyAction { protected function main( string $value ): int { return mb_strlen($value) * 5; } }
- 在验证规则之后
use Chevere\Action\Action; use Chevere\Parameter\Attributes\IntAttr; use Chevere\Parameter\Attributes\ReturnAttr; use Chevere\Parameter\Attributes\StringAttr; class MyAction extends Action { #[ReturnAttr( new IntAttr(min: 0, max: 100) )] protected function main( #[StringAttr('/^ok/')] string $value ): int { return mb_strlen($value) * 5; } }
使用操作
通过传递您将传递给main
的参数来调用操作的主要逻辑。操作内部运行时会验证参数和返回值,以符合所有定义的规则。
💡 您可以通过运行php demo/demo.php
来尝试此功能
$action = new MyAction(); $result = $action('ok muy bueno');
高级使用
返回方法
为了超出PHP属性的限制来验证return
,您可以定义Action的return()
方法。在这个上下文中,您可以使用和重新组合任何Parameter函数。
use Chevere\Action\Interfaces\ParameterInterface; use function Chevere\Parameter\string; public static function return(): ParameterInterface { return string(); }
您还可以通过使用CallableAttr
将参数解析转发到可调用对象
use Chevere\Action\Attributes\CallableAttr; use Chevere\Action\Attributes\ReturnAttr; use function Chevere\Parameter\string; function myCallable(): StringParameterInterface { return string(); } #[ReturnAttr( new CallableAttr('myCallable') )] protected function main(): string { return 'chevere'; }
自定义主方法
覆盖Action的mainMethod
来定义一个自定义的main
方法。
public static function mainMethod(): string { return 'altMain'; }
控制器
控制器组件是负责处理传入指令的特殊类型的Action。其main
方法只接受类型为string
的参数。
控制器旨在与以下内容配合使用
- Web服务器
- CLI应用程序
- 应用程序运行器
定义控制器
控制器实现了ControllerInterface
。您可以通过扩展Controller
来快速创建一个符合规定的控制器
use Chevere\Controller\Controller; class SomeController extends Controller { // ... }
主参数
参数在main
方法中定义,但它只接受字符串。
public function main( string $pepito, string $paysTwice ): array { // ... }
参数属性
使用StringAttr
来验证字符串
use Chevere\Attributes\StringAttr; public function main( #[StringAttr('/^[a-z]$/')] string $pepito, #[StringAttr('/^[a-zA-Z]+$/')] string $paysTwice ): array { // ... }
文档
文档可在chevere.org找到。
许可证
Chevere遵循Apache License,版本2.0。有关完整的许可证文本,请参阅LICENSE。
除非适用法律要求或书面同意,否则在许可证下分发的软件按“现状”分发,不提供任何形式的明示或暗示保证。有关许可证的权限和限制的具体语言,请参阅许可证。