Laravel

LaravelでService(サービス)クラスを使う方法

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

⇨ Laravel 記事の目次はこちら

Laravel で Service(サービス)クラスを使う方法についてまとめてみました。

Service(サービス)クラスの実装方法

最初にディレクトリを作ります。

一般的によく見るのが、App\Services にフォルダを作るケースです。

今回も

App\Services

のフォルダを作ります。

今作ったディレクトリに対して php ファイルを作ります。

App\Services\Test.php

今回はこのような名前で php ファイルを作成しました。

App\Services\Test.php を編集する

<?php

namespace App\Services;

class Test
{
    public function getTestUser()
    {
        dd('test');
    }
}

以上でサービスクラスを作成することができました。

サービスクラスを呼び出す方法

呼び出す方法はいくつかありますが、3つ紹介します。

1.new する方法

使いたいコントローラーなどで、

use App\Services\Test;

public function index()
{
    $test = new Test; //サービスクラスをインスタンス化する
    $user = $test->getTestUser(); //関数を呼ぶ
    dd($user); //test
}

use して、サービスクラスをインスタンス化して呼ぶ方法になります。

2.インスタンス化の記述を減らす

use App\Services\Test;

public function index(Test $test) //ここでインスタンス化できる
{
    $user = $test->getTestUser(); //関数を呼ぶ
    dd($user); //test
}

3.Facade を使う

ファサードに関しては、別で記事を書いた方がわかりやすそうなので、別の記事にまとめています。

Laravel での Facade(ファサード)とは?Facade の実装方法

なぜサービスクラスを使うのか

Controller に全ての記述を書くと、ファットコントローラーでとても読みづらいコントローラーになってしまいます。

コントローラーは役割上、できるだけ記述をスマートにし、細かいロジックなどは別で記述することを薦められます。

目指せスキニーコントローラー!!

サービスクラスの問題点

サービスクラスは、どこからでも簡単に呼べてしまいます。

これはコントローラー以上にややこしくしたり、バグの原因をうむ要因になってしまいます。

結局ルールをしっかり決めた上で運用しないと、ただ単に

コントローラーの記述をサービスクラスに移動させただけ

のコードになってしまいます。

まとめ

以上です。

Laravel でサービスクラスを使う方法についてまとめてみました。

サービスクラスに関しては、マネージャーによって運用方法違うと思いますが、使い方を覚えておいてその場所にあった適切な使い方ができれば良いと思います。

誰かの参考になればと思います。

感想・苦情は TwitterDM にご連絡ください。

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する