Category: Laravel

isNotEmpty 空ではない

コレクションの空をチェックする関数は、isEmpty()、しかし現実では「~が空でないとき」という条件文も良く使います。 もちろん、! で if (! $collection->isEmpty()) とすることでも十分なのですが、なぜか if ($collection->isNotEmpty()) の方が私にはわかりやすい。

Mockeryで外部APIをモックしてユニットテスト

テスト対象が外部APIにアクセスしている場合、テストの度にAPIにアクセスするためテストに時間がかかる・APIが落ちているとテストも落ちる、といった不便さがあります。そこでモックを使用すると、APIを介すことなく対象のテストを行うことができて便利です。本記事では、Mockeryを使ったモックの作成方法・テストの書き方をご紹介します。

クエリの累計時間にタイムアウトを設定する(2)

前回の記事にてタイムアウトとなった場合に2種類の例外がスローされる事を説明しました。クエリ実行中にタイムオーバーとなった場合は、QueryException。クエリ実行外でタイムオーバーとなり、その後クエリを実行してエラーとなる場合は、自作したTimeoutExceptionです。今回はこれらのエラーをどうキャッチしてハンドリングするのか解説します。

クエリの累計時間にタイムアウトを設定する(1)

先日、管理サイトにてアラートが発生しました。調査すると、ある検索画面で利用者が重いクエリを連続で発行した事が原因でした。待ち時間が長かった為、不安になり検索ボタンを連打してしまったようです。サーバに負荷を掛ける操作については注意喚起するとして、待ち時間に制限が無いのはよくありません。そこで、検索処理に制限時間を設ける事にしました。今回はそちらの実装にあたって色々学んだことがあるので紹介します。

【Under the hood】エラーバッグの構造

普段、エラーバッグからエラーを取得する際、$errors->first('name')などとしますが、この時裏ではどんな処理が行われているかご存知でしょうか?私自身、全然意識せずに使っていましたが、調べてみると実はdefaultという名前付きエラーバッグからエラーを取得している事が分かりました。