// app/Http/Requests/StoreUserRequest.phpclass StoreUserRequest extends FormRequest { public function rules(): array { return [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8', ]; }
public function authorize(): bool { return true; }}
// app/Services/UserService.phpclass UserService { public function __construct(protected User $user) {}
public function create(array $data): User { return $this->user->create([ ...Arr::except($data, 'password'), 'password' => Hash::make($data['password']), ]); }}
// Controllerpublic function store(StoreUserRequest $request, UserService $service) { return response()->json( $service->create($request->validated()) );}
$activeUsers = [];foreach ($users as $user) { if ($user->is_active) { $activeUsers[] = $user; }}
$activeUsers = collect($users)->filter->is_active;
$activeUsers = User::where('is_active', true)->get();
@if($user->is_admin) <span class="badge bg-success">Admin</span>@else <span class="badge bg-secondary">User</span>@endif
enum Role: string { case Admin = 'admin'; case User = 'user';}
<x-badge :type="$user->role === Role::Admin ? 'success' : 'secondary'"> {{ $user->role->name }}</x-badge>
{{ \Carbon\Carbon::parse($user->created_at)->format('d M, Y') }}
// Trong User.php modelprotected function createdAt(): Attribute { return Attribute::make( get: fn($value) => \Carbon\Carbon::parse($value)->format('d M, Y'), );}
{{ $user->created_at }}
if ($user) { if ($user->is_active) { if (!$user->is_banned) { // do something } }}
if (!$user || !$user->is_active || $user->is_banned) { return;}// do something
if ($user?->is_active && !$user->is_banned) { // do something}
Tính Năng | Mô Tả | Ví Dụ |
---|---|---|
Read-only Classes cho DTO | Định nghĩa lớp không thể thay đổi sau khi khởi tạo | readonly class CreateUserData { ... } |
Match Expressions thay Switch | Viết biểu thức điều kiện ngắn gọn, rõ ràng hơn | php return match($status) { 'active' => 'Active', ... }; |
Invokable Actions | Tạo lớp có phương thức __invoke giúp gọi như hàm | php class SendWelcomeEmail { public function __invoke(User $user) { ... } } |
Higher-order Pipelines | Dùng các phương thức fluent tiện lợi khi query Eloquent | php $users = User::query()->when($isAdmin, fn($q) => $q->where('role', 'admin'))->get(); |