📌
【Laravel】ビジネスロジックとコントローラーを分ける
概要
・LaravelでControllerに処理を直接記載するのはどのようなプロジェクトでも推奨されない
・あくまでもサービスクラスは個別に階層を分けて記載するべき
・Controller、Model、Serviceそれぞれのクラスを作成済みであることが前提
サービス階層の用意
app階層に「Service」フォルダを作成する
※mkdirコマンド、エディタで手動作成どちらでも良い
Modelを絡ませない場合(コード値を取りたい時など)
Serviceクラスで宣言した値を、Controllerで取得して、Viewに渡す
Service
<?php
namespace App\Services;
class TestService
{
// クラス内に関数を作成して、これを呼び出すようにする
public function hoge()
{
echo 'テスト';
}
}
Controller
class TestController extends Controller
{
/**
* サービスクラスからの値取得テスト
* 初期値を「テスト」で渡す
*/
public function __construct(TestService $test_service)
{
$this->hoge = $test_service;
}
public function test(TestService $test_service)
{
$test_service->hoge();
return view('test.test', compact('test_service'));
}
}
View(テンプレートはblade)
<!doctype html>
<div>
{{$hoge}}
</div>
ルーティング
use App\Http\Controllers\Test\TestController;
/**
* テスト機能:テスト画面
* 初期表示
*/
Route::get('/test/test', [TestController::class, 'test']);
Discussion