前期準備
Repository
app/Repositories/UserRepository.php
<?php
namespace App\Repositories;
interface UserRepository
{
public function create ( $attributes );
}
app/Repositories/Eloquent/Users.php
<?php
namespace App\Repositories\Eloquent;
use App\Models\User;
use App\Repositories\UserRepository;
class Users implements UserRepository
{
protected $user;
public function __construct ( User $user )
{
$this->user = $user;
}
public function create ( $attributes )
{
$user = $this->user->create ( $attributes );
return $user;
}
}
接下來,我們要把 UserRepository 和 Users 繫結到服務提供者:
我們可以使用以下命令快速生成服務提供者:
php artisan make:provider RepositoryServiceProvider
執行後您將會在 app/Providers
資料夾下看見 RepositoryServiceProvider.php
檔案。
繫結類
現在,我們要在 RepositoryServiceProvider.php
檔案中繫結 UserRepository 和 Users 類:
public function register()
{
$this->app->bind (
'App\Repositories\UserRepository',
'App\Repositories\Eloquent\Users'
);
}
最後,我們把 RepositoryServiceProvider
類新增到 config/app.php
檔案中:
config/app.php
return [
.
.
.
'providers' => [
.
.
.
App\Providers\RepositoryServiceProvider::class,
],
.
.
.
]
相關連結:部落格:使用 Repository 設計模式封裝通用的 CURD 操作
Service
app/Services/UserService.php
<?php
namespace App\Services;
use App\Repositories\UserRepository;
use Illuminate\Auth\Events\Registered;
class UserService
{
protected $users;
public function __construct ( UserRepository $users )
{
$this->users = $users;
}
public function createUser ( $request )
{
$user = $this->users->create($request->all());
event ( new Registered($user) );
return $user;
}
}
您也可以根據您的實際情況進行更改。
快速開始
我們可以執行以下命令快速生成控制器:
php artisan make:controller RegisterController
您將在 app/Http/Controllers
資料夾下看見 RegisterController.php
檔案。
接下來,我們在 RegisterController.php
檔案中新增以下內容:
app/Http/Controllers/RegisterController.php
<?php
namespace App\Http\Controllers;
use App\Http\Resources\UserResouce;
use App\Services\UserService;
use Illuminate\Http\Request;
class RegisterController extends Controller
{
public function store ( Request $request, UserService $service )
{
$user = $service->createUser($request);
return new UserResouce($user);
}
}
執行以下命令快速生成 UserResouce
類:
php artisan make:resource UserResource
最後,把 RegisterController
新增到路由,如下所示:
routes/api.php
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post ( 'register', 'RegisterController@store' );
測試環節
在測試開始之前,我們要先檢查細節:
- app/Providers/RouteServiceProvider.php 檔案中的第 29 行是否取消註釋
- .env 檔案中的資料庫配置是否正確
遷移資料庫
如果要遷移資料庫,您可以執行以下命令:
php artisan migrate
使用者註冊
我這裡用 postman
模擬使用者註冊,您也可以選擇您熟悉的軟體。
引數 | 說明 |
---|---|
name | 名稱 |
郵箱 | |
password | 密碼 |
總結
您可以根據您的實際情況進行增加/更改/刪除。
如果想要做到更好,您可以稍加改進。
發揮的想象力,讓您的程式程式碼變得更簡潔、更優雅。
本作品採用《CC 協議》,轉載必須註明作者和本文連結