入力クラス
「私たちは自分で選択できない条件から始まり、そこから自分の存在を築く」
—ハイデガーの被投性(Geworfenheit)概念より(『存在と時間』1927年)
出発点
入力クラスは、Be Frameworkにおけるすべての変容の出発点です。
入力クラスにはオブジェクト自身が持つ要素だけが含まれ、外部依存がありません。これがオブジェクトの本質的な属性です。オブジェクトの内側にあるものなので、これを内在(Immanence)と呼びます。
基本構造
#[Be(ValidatedUser::class)] // 変容の運命
final readonly class UserInput
{
public function __construct(
public string $name, // 内在
public string $email // 内在
) {}
}
主要な特徴
純粋なアイデンティティ: 入力クラスはオブジェクトが何であるかだけを含みます。外部依存や複雑なロジックはありません。
ユースケースの起点: すべてのユースケースは固有の入力クラスを持ちます。
変容先(オブジェクトの運命): #[Be()]属性は、この入力が何になるかを宣言します。
読み取り専用プロパティ: すべてのプロパティは readonly です。入力クラスの値は変更されません。
例
単純なデータ入力
#[Be(OrderCalculation::class)]
final readonly class OrderInput
{
public function __construct(
public array $items, // 内在
public string $currency // 内在
) {}
}
複雑な構造化入力
#[Be(PaymentProcessing::class)]
final readonly class PaymentInput
{
public function __construct(
public Money $amount, // 内在
public CreditCard $card, // 内在
public Address $billing // 内在
) {}
}
入力クラスが外の世界と出会い、変容を始めます。その過程を存在クラスで見ていきます ➡️