【市場価値がわかる】エンジニア転職におすすめなサイト

Laravelでserviceクラスを作る手順!ロジックを切り分けてコード効率化

20代の転職ならマイナビジョブ

Laravelでserviceクラスを作るにはどうすればいいんだろう…?

こんな疑問を解決します。

Laravelでserviceクラスを作る最大のメリットは、コントローラーに書いていたちょっと複雑なロジックをサービスに書くことでコントローラーの記述量を減らせる点です。

ロジックを分離させることができるので、コードも読みやすくなり効率的になります。

この記事では、serviceクラスの作成手順を紹介していくので参考にしてくださいね!

Contents

動作環境

Docker 20.10.7
PHP 7.4.22
Laravel 8.53.1
mySQL 5.7
データベースのツール phpmyadmin

Laravelでserviceクラスを作る流れ

STEP
servicesファイルを手動で作成する

app配下にapp/Servicesを作る

STEP
コントローラーで呼び出す

【手順1】servicesファイルを手動で作成する

Laravelではモデルなどのphp artisan make:model のように今のところservicesクラスをコマンドで作成する方法はないみたいなので、手動で作成します。

Servicesが作れたら、適当に〇〇.phpを作成しておきます。

ちなみに今回は、ログの表示ができるか調べてみるので、logServeivce.phpを以下のようにしました。

<?php
 
namespace App\Services;
 
use Illuminate\Support\Facades\Log;
 
/**
 * ログ関連サービス
 */
class LogService
{
  // ログの表示
  public function log($view, $result)
  {
      $output = '出力画面: '.$view.', 結果: '.$result;
      Log::info($output);
  }
}

【手順2】コントローラーでserviceクラスを呼び出す

serviceクラスを作成したので、コントローラーで呼び出します。

<?php

namespace App\Http\Controllers;

use App\Models\User;
use App\Models\Book;
use App\Models\Category;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use App\Services\logService;←追加

class BookController extends Controller
{
    private $log;

    public function __construct()
    {
        $this->book = new Book();
        $this->category = new Category();
        $this->log = new LogService();
    }

    /**
     * 一覧画面
     */
    public function index()
    {
        // 画面ログ
        $this->log->log('本の一覧画面', '表示成功');
        
        // 本の一覧データを取得
        $books = $this->book->findAllBooks();

        return view('book.index', compact('books'));
    }

コントローラーの冒頭にuse App\Services\logService;を追加することで、serviceで定義した内容を使用できます。

constructの中にthisとか書いてありますが、ここら辺の理解がまだない人は以下の記事を読むことをおすすめします。

サービスクラスのlogService.phpのlogメソッドが呼ばれて、ログが表示できることが確認できます。

[2021-10-23 11:54:19] local.INFO: 出力画面: 本の一覧画面, 結果: 表示成功  

Laravelでログがいまいちよくわからない….って人は以下の記事がおすすめです。

【まとめ】Laravelでserviceクラスを作る手順

今回は、Laravelでserviceクラスを作成する手順を解説しました。

servicesクラスに定義することで、コントローラーにロジックを書くことも少なくなるのでぜひ活用してくださいね!

このブログでは、他にも実務に役立つLaravelの記事を書いているので、ぜひ参考にしてください。

20代の転職ならマイナビジョブ

現役エンジニアに相談するならMENTA(おすすめ)

スキルを売り買いするならココナラ

動画教材ならUdemy

コメント

コメントする

CAPTCHA


Contents
閉じる