副業におすすめなサイトを見る→

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

アプリリリースのお知らせ

予定を探すアプリyoteipickerをリリースしました。

アプリの利用用途:暇だから何か予定入れたいけど今週の土日は何しようかな〜?ってときに使えるアプリです。

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の記事を書いているので、ぜひ参考にしてください。

>>ココナラと似てるおすすめの副業サイトを確認する

>>リモートワークもあるおすすめの転職サイトを確認する

休日で空いた時間の暇つぶしを探せるアプリを公開しています。

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

コメント

コメントする

CAPTCHA


Contents
閉じる