chevere/action

面向对象的Parameter处理规范

1.0.0 2024-01-11 13:26 UTC

This package is auto-updated.

Last update: 2024-09-21 00:14:21 UTC


README

🔔 订阅通讯,不错过Chevere的任何更新。

Chevere

Build Code size Apache-2.0 PHPStan Mutation testing badge

Quality Gate Status Maintainability Rating Reliability Rating Security Rating Coverage Technical Debt CodeFactor

摘要

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找到。

许可证

版权所有Rodolfo Berrios A.

Chevere遵循Apache License,版本2.0。有关完整的许可证文本,请参阅LICENSE

除非适用法律要求或书面同意,否则在许可证下分发的软件按“现状”分发,不提供任何形式的明示或暗示保证。有关许可证的权限和限制的具体语言,请参阅许可证。