Home

Awesome

LaravelとEloquentの永続化パターンのサンプル

laravel.osaka #12のスライド用のサンプルコード。

簡単なTodo管理Webアプリの要件としてTodoItemInterfaceとTodoItemRepositoryInterfaceを6パターンで実装した例。

Laravelパッケージとして実装

インストール

# 作業ディレクトリを作成
mkdir lara-todo-app
cd lara-todo-app

# このリポジトリをクローン
git clone https://github.com/n1215/lara-todo-persistence

# Laravelアプリケーションを作成
composer create-project --prefer-dist laravel/laravel
cd laravel

# ローカルのComposerパッケージをインストール
composer config repositories.local path "../lara-todo-persistence"
composer require n1215/lara-todo-persistence

# .envのDBドライバを変更 sqliteが手軽

# マイグレーション
php artisan migrate

Web API

cd lara-todo-app/laravel
php artisan serve

実装したインターフェース

実装6パターン

実装切り替え

コンフィグをpublish

cd lara-todo-app/laravel
php artisan vendor:publish --tag=laratodo-config

config/laratodo.phpのimplの数値を書き換える

<?php

return [
    /**
     * 実装クラスの切り替え 1〜6
     * 1 => Impls\EloquentAsEntity\TodoItemRepository::class
     * 2 => Impls\EntityContainsEloquent\TodoItemRepository::class
     * 3 => Impls\POPOAndEloquent\TodoItemRepository::class
     * 4 => Impls\POPOAndQueryBuilder\TodoItemRepository::class
     * 5 => Impls\POPOAndPDO\TodoItemRepository::class
     * 6 => Impls\POPOAndAtlas\TodoItemRepository::class
     */
    'impl' => 1,
];