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
こちらもおススメ