[Laravel] Stringableオブジェクトをstringに変換する [Strヘルパ]

カテゴリ: Laravel | タグ:

Laravelでは文字列操作のためのヘルパクラスとして、Strクラス(Illuminate\Support\Str)が用意されています。

これのFluent版のメソッドを使うとメソッドチェーンで文字列を加工できるのでコードを簡潔に書くことができます。

$stringable = Str::of('Laravel 6.x')->replace('6.x', '7.x');

echo get_class($stringable);    // \Illuminate\Support\Stringable

これらのメソッドの戻り値はメソッドチェーンを実現する都合上、単なるPHP文字列ではなくStringableクラスのオブジェクトを返します。

Stringableクラスのオブジェクトを、単なるPHPのstring文字列にしたい場合はどうすればよいでしょうか?

Stringableを、phpのstring文字列に変換する

Stringableオブジェクトのインスタンスを文字列に変換したい場合は、下記のように__toString()メソッドを呼べば良いです。

// $replacedは文字列
$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x')->__toString();

echo is_string($replaced);     // true

もしくは単に(string)でキャストしても良いです。

// $replacedは文字列
$replaced = (string)Str::of('Laravel 6.x')->replace('6.x', '7.x');

echo is_string($replaced);     // true

PHPで標準で用意されているstrval()関数を使っても文字列を取得できます。

$replaced = strval(
    Str::of('Laravel 6.x')->replace('6.x', '7.x')
);

echo is_string($replaced);     // true

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。