てくてくテック

【Laravel】Fluent文字列操作を試してみる! その三

Fluent文字列操作を試してみる! その二

本記事ではLaravel 7で新しく出てきたFluent文字列操作ヘルパーを解説します。

Laravel 6系以下では使用できないのでお気をつけください。

さて、それでは引き続きみていきます!

ちなみに、その二はこちらを参照してください。

titleヘルパー

まずはtitleヘルパーです。

このメソッドは、文字列をタイトルケース(Title Case)に変換してくれるようです。

筆者はじめてきいたんですが、おそらくアッパーキャメルかつ語句間にスペースがある形式をタイトルケースと読んでいるみたいですね。

Str::of('a nice title uses the correct case')->title();
// 'A Nice Title Uses The Correct Case'

Str::of('a_nice_title_uses_correct_case')->title();
// 'A_Nice_Title_Uses_Correct_Case'

Str::of('Anicetitleusescorrectcase')->title();
// 'Anicetitleusescorrectcase'

スネークケースもっぽくなりますね。

ただ、やはりくっついているとダメなようです。

singularヘルパー

次はsingularメソッドです。

このメソッドでは、単語を単数形に変換するメソッドです。

現在は英語のみ対応しているようです。

Str::of('cars')->singular();
// 'car'

Str::of('children')->singular();
// 'child'

Str::of('children and cars')->singular();
// 'children and car'

Str::of('favorites')->singular();
// 'favourite'

Str::of('favourites')->singular();
// 'favorite'

slugヘルパー

次はslugメソッドです。

slugメソッドは文字列をURLに向いた形式(スラグ)に変換します。

Str::of('Laravel Framework')->slug('-');
// 'Laravel-framework'

Str::of('Laravel_Framework')->slug('-');
// 'laravel-framework'

Str::of('LaravelFramework')->slug('-');
// 'laravelframework'

スラッグってなんだ・・・?

と思いましたが、普通に一般的なURLのbase部分を除いた名称のようです。

いまいち具体的な形式は掴めていないのですが、とりあえず試した範囲からだと空白やアンダーバーで区切っている場合、ハイフンに変えてくれるってことなのかな?と思いました。

snakeヘルパー

次はsnakeヘルパーです。

すでにたくさん出てきましたが...

camelメソッド、kebabuヘルパーと同列のものですね。

スネークケース(snake_case)に変換することができます。

Str::of('fooBar')->snake();
// 'foo_bar'

Str::of('foo-bar')->snake();
// 'foo-bar'

Str::of('FooBar')->snake();
// 'foo_bar'

Str::of('foobar')->snake();
// 'foobar'

startsWithヘルパー

次はstartsWithメソッドです。

Str::of('This is a pen')->startsWith('This');
// true

Str::of('This is my name')->startsWith('That');
// false

endWithヘルパーの逆ですね。

studlyヘルパー

次はstudlyヘルパーです。

このメソッドはスネークケースをアッパーキャメルケース(UpperCamel)に変えてくれるメソッドです。

Str::of('foo_bar')->studly();
// FooBar

Str::of('foo-bar')->studly();
// 'FooBar'

Str::of('fooBar')->studly();
// 'FooBar'

Str::of('foobar')->studly();
// 'Foobar'

substrヘルパー

次はsubstrヘルパーです。

このメソッドは引数で指定された開始位置と長さの部分文字列を返します。

Str::of('123456789abcdefg')->substr(8);
// '9abcdefg'

Str::of('123456789abcdefg')->substr(8, 5);
// '9abcd'

ようは文字列の部分文字列を切り取るわけですね!

trimヘルパー

次はtrimメソッドです。

trimメソッドは文字列をトリムしてくれるメソッドです。

また、引数の文字でトリムすることも可能です。

Str::of('  Laravel  ')->trim();
// 'Laravel'

Str::of('/Laravel/')->trim('/');
// 'Laravel'

Str::of('///Laravel///')->trim('/');
// 'Laravel'

Str::of('hhhLaravelhhh')->trim('h');
// 'Laravel'

Str::of('LaravelhogeLaravelhoge')->trim('hoge');
// 'LaravelhogeLaravel'

外側(前方or後方)に指定した文字があればを切り取るみたいですね。

ucfirstヘルパー

次はucfirstメソッドです。

このメソッドは文字列の最初の文字を大文字にします。

Str::of('this is a pen')->ucfirst();
// 'This is a pen'

Str::of('This is a pen')->ucfirst();
// 'This is a pen'

whenEmptyヘルパー

次はwhenEmptyメソッドです。

このメソッドは、文字列が空だった場合、実行するクロージャを指定することが可能です。

Str::of('')->whenEmpty(function ($string) {
    return 'EmptyColumn';
});
// 'EmptyColumn'

Str::of('')->whenEmpty(function ($string) {
    // 何か処理
});
// '' (Illuminate\Support\Stringable)

DBの文字列が入りそうなカラムに対する処理とかかけそうですね...!

また、からの場合のみDB追加〜等行って、返り値を返さない場合は空のFluent文字列インスタンス(Illuminate\Support\Stringable)を返します。

wordsヘルパー

最後にwordsメソッドです。

単語数で制限をかけることができます。

第一引数は残す単語数、第二引数はそれらの単語の後に続ける語句を渡します。

制限内で納まる場合は第二引数の文字列は残りません。

Str::of('This is a pen')->words(3, ' ...');
// 'This is a ...'

Str::of('This is a pen')->words(3, '~');
// 'This is a~'

Str::of('This is a pen')->words(4, '~');
// 'This is a pen'

まとめ

今回Laravel 7系で新しく追加されたヘルパをみてきました。(長かった...w)

もともと5系でヘルパがあり、それが廃止されて、そのリニューアル的な立ち位置みたいですね。

より便利に、そしておそらく高速に?なって帰ってきたんでしょう!

laravel 7系へ以降させるのに骨が折れそうですが、できた暁にはできることもたくさん増えそうですね...!

大まかには公式(日本語版)を参考にしつつまとめていきました。

所々誤字等あるかもしれませんが多めにみてください...!

(そのうち読み直して修正します...!)

使い所の難しいものもいくつかありましたが、だいぶんコードも綺麗になるので、こう言ったヘルパーは是非、積極的に使っていきましょう!

それでわ!

モバイルバージョンを終了