ポンコツエンジニアのごじゃっぺ開発日記。

いろいろポンコツだけど、気にするな。エンジニアの日々の開発などの記録を残していきます。 自動で収入を得られるサービスやシステムを作ることが目標!!

Laravel 9.x からランダムな文字列やuuidの生成できるhelperが追加された。

Laravel 9がそろそろリリースされますが、まだまだ新しい機能が追加されています。その中でも今回はいろんな文字列の生成について紹介したいと思います。

str() ヘルパーが追加された

str()というヘルパーが追加されました。

github.com

これはどういうものかというと、以下のような処理をするだけのメソッドではあります。

if (! function_exists('str')) {
    /**
     * Get a new stringable object from the given string.
     *
     * @param  string  $string
     * @return \Illuminate\Support\Stringable
     */
    function str($string)
    {
        return Str::of($string);
    }
}

Strクラスsrc/Illuminate/Support/Str.php)のof()を呼ぶだけですね。文字列からStringableオブジェクトを作成してくれます。

なので、例えば、str('string-value')と書くだけで、string-valueの文字列が格納されたStringableオブジェクトを生成してくれます。

str()ヘルパーのデフォルト引数が追加された

上記のプルリクエストがマージされたあとに、以下の対応がマージされました。

github.com

str()ヘルパーの引数にデフォルト値が追加されています。

f:id:ponkotsu0605:20220124100059p:plain

それに加えて、引数がなかった場合に、Strクラス()の動的メソッドを呼ぶような無名クラスが生成されています。

    function str($string = null)
    {
        if (func_num_args() === 0) {
            return new class
            {
                public function __call($method, $parameters)
                {
                    return Str::$method(...$parameters);
                }
            };
        }

        return Str::of($string);
    }

なので、str()の戻り値自体は以下のような__call()メソッドがあるだけの無名クラスになります。

class {
    public function __call($method, $parameters)
    {
        return Str::$method(...$parameters);
    }
};

さて、これをどう使うのでしょうか?

ランダムな文字列やuuidの生成ができる

上で説明した無名クラスを利用すれば、以下のようにStrクラスのメソッドを簡単に呼ぶことができるのです。

str()->random(16); // QDae31W1nFshBV97
str()->uuid(); // 85d57da7-12d0-4594-ad00-ff1eb1bcfff9

このように、文字数を指定してランダムな文字列を生成したり、uuidの生成をしたり、Strクラスに存在するstaticメソッドを利用することができます。

Str::random(16);  // これまで
str()->random(16);  // ヘルパの利用

このくらいの差なのかなと思うのですが、今後は違う書き方もできるようになりますね。

お問い合わせプライバシーポリシー制作物