dkplus/formica

Formica 允许您在项目中轻松使用构建器模式,例如设置测试数据。

v0.1.1 2016-09-21 10:31 UTC

This package is auto-updated.

Last update: 2024-09-08 22:23:35 UTC


README

SensioLabsInsight Build Status

Formica 允许您在项目中轻松使用构建器模式,例如设置测试数据。

安装

可以通过运行 composer require dkplus/formica 轻松安装 Formica。

快速入门

假设您有一个类 Acme\Issue,您想为其创建一个构建器。它有一些属性,可以通过命名构造函数进行构造。

namespace Acme;

class Issue
{
    // …
    
    public static function bug(string $id, string $title, string $text): self
    {
        // …    
    }
    
    // …
}

对于构建器,您需要一个名为 Acme\IssueBuilder 的另一个类,它继承自基本构建器

namespace Acme;

use Dkplus\Formica\Builder;

/**
 * @method IssueBuilder withTitle(string $title)
 * @method IssueBuilder withText(string $text)
 */
class IssueBuilder extends Builder
{
    public static function aBug()
    {
        return new self([
            '74738ff5-5367-5958-9aee-98fffdcd1876',
            'title' => 'It does not work',
            'text' => 'A long error text',
        ], 'bug');
    }
}

您可以使用构建器如下

$issue = IssueBuilder::aBug()->withTitle('Another title')->build();

解释

Dkplus\Formica\Builder 期望三个参数

  • 传递给构造方法的默认参数。
  • 用于构造对象的静态方法名称。如果提供 null,则将使用对象的构造函数。
  • 对象的类。如果提供 null,它将尝试通过使用构建器的类并去除最后 7 个字符来猜测类。因此,如果您将构建器命名为 <NameOfYourClass>Builder,则不需要传递类。

虽然 Dkplus\Formica\Builder 的构造函数是公共的,但我建议创建一个静态方法来调用它并设置默认值。

所有具有键的参数都可以通过 withX()andX() 方法之一(两者都提供流畅的接口)进行覆盖。

如果您想要自动完成,我建议在构建器上方放置一些注解(请参阅上面的示例)。