LoginSignup
12
7

More than 5 years have passed since last update.

Laravel いつの間にか増えてたヘルパー

Last updated at Posted at 2017-09-27

結構前に増えてたのも含む。
https://readouble.com/laravel/5.5/ja/helpers.html

Laravel内でしか意味のなさそうなのはこっち
https://github.com/laravel/framework/blob/master/src/Illuminate/Foundation/helpers.php
Laravel外でも使えそうなのはこっち
https://github.com/laravel/framework/blob/master/src/Illuminate/Support/helpers.php

auth()

Auth:: と同じ。

Laravel 5.0で名前空間使うようになって \Auth:: と書くか use が必要になったのでその代わり。

use Auth;

Auth::user()

auth()->user()

5.0 の頃はこのパターンでいくつも増えてる。
request()
response()
view()

実は4の頃にもあったかもしれないけどさすがにもう忘れた。

info()

Log::info() と同じ。

logger('')

Log::debug('') と同じ。

logger() のみだとロガーインスタンスなので error()

logger()->error('You are not allowed here.');

dispatch_now()

Jobを同期的に実行して返り値を得る。
これできないと思ってたけど Dispatcher クラスには前から dispatchNow() があって5.5で dispatch_now() が追加されてる。

optional()

これはめちゃくちゃ便利だった…特にviewで使う時。nullのチェックしなくていい。たぶん別の言語から輸入された概念。

return optional($user->address)->street;

{!! old('name', optional($user)->name) !!}

now() today()

Carbon::now() や Carbon::today() と同じ。

rescue()

try catchと同じだけど何が便利になるのかはまだよく分かってない。

    function rescue(callable $callback, $rescue = null)
    {
        try {
            return $callback();
        } catch (Throwable $e) {
            report($e);
            return value($rescue);
        }
    }

こういうシンプルな例ならいいけど

return rescue(function () {
    return $this->method();
});

function () use () {} とかだと複雑になりすぎる。複雑にならないようにリファクタリングだ。

tap()

tap() や value() 辺りもどこでどう使うのか分かってないやつ。

ドキュメントのこの例は分かりやすいんだけど

$user = tap($user)->update([
    'name' => $name,
    'email' => $email
]);

自分でコード書いてる時にここで tap() 使うと良さそうと思い付けない。

object_get()

ドキュメントにないだけで前からあった。
array_get() と同じ使い方。
この辺のヘルパーの利点は途中が null でもエラーにならず default が返されること。

おわり

なお、一番よく使うのは dd()

追記

これ書いた後にまたドキュメントにどさっと増えてた…。最新のドキュメント確認してないと本当にいつの間にか増える…。

data_get() data_fill() data_set()

data_get() は配列にもオブジェクトにも使えるようなので object_get() ではなくこっちのほうが良さそう?

data_get() も書かれてなかっただけで前から存在したけどドキュメントにない=将来的に消える可能性もあるので書かれてるかどうかは気にする。

ドキュメントにはないけど data_get() もワイルドカード * が使える。

blank() filled()

empty と微妙に違う…?

str_

str_replace_array() 辺りも増えたはずだけどいつ使うのかはよく分からない。

12
7
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
12
7