Controller- Repository- Service model の 基本実装ガイドは、 Laravel 管理と保守が簡単な方法でソース コードを整理するのに役立ちます。 この構造を実装する方法の具体的な例を次に示します。
Model
ここで、データベースと対話するための属性とメソッドを定義します。 Laravel モデルを操作するための Eloquent ORM メカニズムを提供します。 たとえば、テーブル model の を作成してみましょう Posts
。
// app/Models/Post.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
Repository
は、 と の repository 間の仲介者として機能します 。 これには、 を通じてデータベース操作を実行するメソッドが含まれています 。 これにより、データベース ロジックを分離することができ 、データベース ロジックの変更やテストが容易になります。 Controller Model model controller
// app/Repositories/PostRepository.php
namespace App\Repositories;
use App\Models\Post;
class PostRepository
{
public function create($data)
{
return Post::create($data);
}
public function getAll()
{
return Post::all();
}
// Other similar methods
}
Service
には service ビジネス ロジックが含まれており、 と通信します Repository。 は Controller からのメソッドを呼び出して Service リクエストを処理し、対応するデータを返します。 これにより、ビジネス ロジックをビジネス ロジックから分離することができ controller 、テストとメンテナンスが容易になります。
// app/Services/PostService.php
namespace App\Services;
use App\Repositories\PostRepository;
class PostService
{
protected $postRepository;
public function __construct(PostRepository $postRepository)
{
$this->postRepository = $postRepository;
}
public function createPost($data)
{
return $this->postRepository->create($data);
}
public function getAllPosts()
{
return $this->postRepository->getAll();
}
// Other similar methods
}
Controller
は、 controller ユーザー要求を処理し、 からメソッドを呼び出して Service データを取得または送信し、結果をユーザーに返す場所です。
// app/Http/Controllers/PostController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\PostService;
class PostController extends Controller
{
protected $postService;
public function __construct(PostService $postService)
{
$this->postService = $postService;
}
public function create(Request $request)
{
$data = $request->only(['title', 'content']);
$post = $this->postService->createPost($data);
// Handle the response
}
public function index()
{
$posts = $this->postService->getAllPosts();
// Handle the response
}
// Other similar methods
}
この構造を適用すると、アプリケーションのさまざまな部分を効率的に管理できます Laravel。 さらに、ビジネス ロジック、ストレージ ロジック、クラス間の通信を分離することで、コードベースが柔軟になり、保守しやすく、テストしやすくなります。