Field Manual PHP / Laravel reference
← Laravel

Service classes

A service holds a cohesive business operation outside HTTP concerns.

What it is

A service holds a cohesive business operation outside HTTP concerns.

When to use it

Use when the operation has meaningful rules or multiple writes.

Syntax

public function place(User $user, array $data): Order {}

Example

namespace App\Services;
use App\Models\{Order, User};
use Illuminate\Support\Facades\DB;
class OrderService
{
    public function place(User $user, array $data): Order
    {
        return DB::transaction(fn () => $user->orders()->create([
            "reference" => $data["reference"],
            "total_cents" => $data["total_cents"],
            "status" => "pending",
        ]));
    }
}

Common mistakes

A one-write operation may not need a service or transaction; do not add layers to demonstrate patterns.

Related topics

Classes