入力クラス
「私たちは自分で選択できない条件から始まり、そこから自分の存在を築く」
—ハイデガーの被投性(Geworfenheit)概念より(『存在と時間』1927年)
出発点
入力クラスは、Beフレームワークにおけるすべての変容の出発点です。
ここにはオブジェクト自身が持つ要素だけが含まれ、外部依存がありません。いわばオブジェクトのアイデンティティです。オブジェクトの内側にあるものなので、これを内在的性質、イマナンス(Immanence)と呼びます。
基本構造
#[Be(UserProfile::class)] // 変容の運命
final readonly class UserInput
{
public function __construct(
public string $name, // 内在的
public string $email // 内在的
) {}
}
主要な特徴
純粋なアイデンティティ: 入力クラスはオブジェクトが根本的に何であるかのみを含みます—外部依存関係や複雑なロジックはありません。
変容先(オブジェクトの運命): #[Be()]属性は、この入力が何になるかを宣言します。
読み取り専用プロパティ: すべてのデータは不変であり、変異ではなく変容する固定されたアイデンティティを表します。
例
単純なデータ入力
#[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 // 内在的
) {}
}
イマナンスの役割
入力クラスでは、すべてがイマナンスです。ここにはトランセンデンス(Transcendence/超越的な力)はありません。トランセンデンスは外部から提供される、自分だけでは実現不可能な力であり、それらは後で存在クラス(Being クラス)において現れます。
例えば、UserInputクラスはメールアドレスと名前という素のデータだけを持ちます。このメールアドレスが有効かどうかを検証する力、データベースに保存する力、通知を送る力——これらはすべてトランセンデンスであり、入力クラスには存在しません。入力クラスはただ「私はこういうデータです」と宣言するだけです。
入力クラスは変容の出発点です。自己を超えたものと出会って、新しい何かへと変わっていく最初の姿を表します。
入力クラスが外の世界と出会い、変容を始めます。その過程を存在クラスで見ていきます ➡️