🍣

PHP Laravelのよく使う記法をまとめてみたよ

2025/02/19に公開

今回PHP Laravelのよく使う記法についてまとめてみました。

デバッグ

プロジェクトによってはXcodeのようなデバッグツールを使用せず、デバッグするシーンがあったりするので基本的な記法押さえておきます。

dd()

変数の中身を確認して、dd()以降のプログラム処理を実行を行いません。

php
$sample = 'aaa';
dd($sample); // aaa

dump()

プログラム処理を止めずに変数を確認する場合はdump()を使用します。

php
$sample = ['a', 'b', 'c'];
foreach ($sample as $row) {
   dump($row); // a,b,cの順に出力
}

Log::

エラーを追う際、ログ出力はド定番ですよね。
基本的にはバックエンドの例外エラーを追う際に使用します。

php
try{
    //正常処理
} catch (Exception $e) {
    DB::rollBack();
    Log::error($e->getMessage());
}

日付変換

日付変換は理由は後述しますが、最近はCarbon()しか使用していないです。

Carbon()

PHPに標準搭載されたDateTimeクラスを継承した日付を操作するためのライブラリです。

php
// 現在日時が 2024-10-01 12:00:00の場合
$time = new Carbon(); // 2024-10-01 12:00:00
$now =Carbon::now();  // 2024-10-01 12:00:00
$today = Carbon::today(); // 2024-10-01 00:00:00
$tomorrow = Carbon::tomorrow(); // 2024-10-02 00:00:00
$yesterday = Carbon::yesterday();// 2024-09-30 00:00:00
$datetime = Carbon::parse('2024-10-03')->format('Y-m-d'); // 2024-10-03

PHPはstrtoeime()やdate()でも日付操作を行うことが可能ですが、こちらの関数には2038年問題というものがあり今後のソース改修を考えるとあまり使わない方がよいです。
※2038年問題とは32bit版OSだとタイムスタンプは「2147483647」までしか取り扱えず、最大値を超えてオーバーフローすると誤動作する可能性があることです。

データマージ

PHP Laravelではバックエンド処理の中で、array型やcollection型のデータをモデルファイルいじることが多いので、よく使うデータマージ記法を紹介します。

array_merge(),array_push()

いずれも配列に要素を追加する関数です。
array_merge()は複数の配列を結合する際に使用します。返却値は結合された新しい配列が返され、結合の際に同じキーを持つ要素がある場合、後の配列の値が前の配列の値を上書きします。

php
$array1 = ['a' => 'apple', 'b' => 'banana'];
$array2 = ['b' => 'blueberry', 'c' => 'cherry'];
$result = array_merge($array1, $array2);
// $result: ['a' => 'apple', 'b' => 'blueberry', 'c' => 'cherry']

array_push()は配列の末尾に1つ以上の要素を追加して、追加後の配列要素数を返却します。

php
$array = ['apple', 'banana'];
array_push($array, 'cherry', 'date');
// $array: ['apple', 'banana', 'cherry', 'date']

concat(),push()

こちらはcollection型に要素を追加する関数です。
concat()は既存コレクションに新しいコレクションや配列を結合するために使用します。
返却値は新しいコレクションとなります。

php
$collection = collect([1, 2, 3]);
$newCollection = $collection->concat([4, 5]); // [1, 2, 3, 4, 5]

push()はレクションの末尾に単一の要素を追加するために使用します。
返却値は追加された後のコレクション自身となります。

php
$collection = collect([1, 2, 3]);
$collection->push(4); // [1, 2, 3, 4]

型変換

前述通りPHP Laravelのバックエンド実装では、DBからデータ取得時にクエリビルダを頻繁に使用することから、collection型を扱うことも多いです。
今回はcollection型→array型に変換する方法を一つ紹介します。

all()

クエリビルダでget()後、all()することでarray型に変換することができます。

php
User::get()->all();

toArray()でもarray型に変換できますが、実行コストが少ないことからall()が推奨されています。
https://qiita.com/ucan-lab/items/47638a7b52090f59c2bf

データ切り取り

バックエンド処理時にデータを部分的に切り取りしたい場面があるので、定番のものを紹介します。

substr()

文字列を部分的に取得する際に使用します。
基本的には第1引数で部分的に取得したい文字列、第2引数は切り取り開始位置、第3引数は切り取り終了位置の指定をします。

php
$string = "Hello, World!";
$substring = substr($string, 0, 5); // "Hello"

空判定

バックエンド実装時に制御文の分岐で空判定を行うことがよくあるので抜粋して紹介します。

empty()

変数の中身が空、配列の中身が空の際に使用します。
isset()も似た判定をしますが、empty()は変数が未定義であればtrueとなります。

php
$variable = [];
if (empty($variable)) {
    // $variableは空です
} else {
    // $variableには値があります
}

isEmpty()

collection型で空判定する場合はisEmpty()を使用します。

php
use Illuminate\Support\Collection;

$collection = new Collection();
if ($collection->isEmpty()) {
    echo "コレクションは空です";
} else {
    echo "コレクションには要素があります";
}

その他空判定の取り扱いで困ったときはこちらの記事の空判定早見表をよく見ています。
https://qiita.com/shinichi-takii/items/00aed26f96cf6bb3fe62

ページネーション

Laravelを使用していれば用意ページネーション処理を実行できます。

paginate()

クエリビルダでget()する前に指定することでページネーション処理を行います。引数で1ページの表示件数を指定します。

php
use App\Models\User;

$users = User::paginate(10); // 1ページあたり10件のユーザーを取得

get()後に加工したデータをページネーションしたい場合は、LengthAwarePaginatorライブラリを導入して実装したりします。
https://readouble.com/laravel/11.x/ja/pagination.html

Discussion