LoginSignup
8
0

More than 1 year has passed since last update.

PHPでStannumを使って超簡単にValue Objectを作る

Posted at

おはようこんにちはこんばんは。

さて、今回は自作したライブラリの宣伝にはなってしまいますが、Stannumというライブラリを使って、便利に使える値オブジェクト(Value Object)を簡単に作る方法を紹介したいとおもいます。

ライブラリ本来の使い方からは少し逸れますが、ライブラリのクラスでスカラー型をラップするという性質を利用して、そのクラスを継承してValue Objectとして活用しました。

導入

他のライブラリ同様、いつも通りcomposerから入れてあげます。

composer require tumugin/stannum

Stannumの紹介については、上のスライドを見ていただけると分かりやすいと思います!

Value Objectを作る

今回は試しにユーザの苗字(Last Name)を表現するValue Objectを作ってみます。

use Tumugin\Stannum\SnString;

class UserLastName extends SnString
{
}

必要があれば byString 関数などをオーバーライドすることで、中身を検証してからインスタンスを生成するようにしましょう。

use Tumugin\Stannum\SnString;

class UserLastName extends SnString
{
    public static function byString(string $value)
    {
        if (SnString::byString($value)->trim()->equals('')) {
            throw new \RuntimeException('苗字は空に出来ません');
        }
        return parent::byString($value);
    }
}

生の値からのインスタンスの生成は、継承元のクラスに生えているbyString,byInt,byFloat関数が使えるので、そちらを使います。

UserLastName::byString('藤宮');

数値型ももちろん...?

use Tumugin\Stannum\SnInteger;

class UserReactionCount extends SnInteger
{
}

文字列型と同様に作ることが出来ましたね!

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0