<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
laravel-architex / architecture-generator example snippets
// In your controller
class UserController extends Controller
{
public function index()
{
// That's it! No need to create individual repositories
$users = Repository::model(User::class)->paginate(15);
return response()->json($users);
}
}
// In your controller
class UserController extends Controller
{
public function __construct(
private UserServiceInterface $userService
) {}
public function index()
{
$users = $this->userService->getAllUsers();
return response()->json($users);
}
public function store(StoreUserRequest $request)
{
$user = $this->userService->createUser($request->validated());
return response()->json($user, 201);
}
public function show(int $id)
{
$user = $this->userService->findUserById($id);
return response()->json($user);
}
public function update(UpdateUserRequest $request, int $id)
{
$user = $this->userService->updateUser($id, $request->validated());
return response()->json($user);
}
public function destroy(int $id)
{
$this->userService->deleteUser($id);
return response()->json(['message' => 'User deleted successfully']);
}
}
// In your service implementation
class UserService implements UserServiceInterface
{
public function __construct(
private UserRepositoryInterface $userRepository
) {}
public function getAllUsers(): array
{
return $this->userRepository->getAll();
}
public function findUserById(int $id): ?object
{
return $this->userRepository->findById($id);
}
public function createUser(array $data): object
{
// Add business logic here
return $this->userRepository->create($data);
}
public function updateUser(int $id, array $data): ?object
{
// Add business logic here
return $this->userRepository->update($id, $data);
}
public function deleteUser(int $id): bool
{
// Add business logic here
return $this->userRepository->delete($id);
}
public function findUserByEmail(string $email): ?object
{
return $this->userRepository->findByEmail($email);
}
}
// In your controller (if you prefer direct repository usage)
class UserController extends Controller
{
public function __construct(
private UserRepositoryInterface $userRepository
) {}
public function index()
{
$users = $this->userRepository->getAll(['status' => 'active']);
return response()->json($users);
}
public function show(int $id)
{
$user = $this->userRepository->findById($id);
return response()->json($user);
}
}
'providers' => [
// ... Laravel Framework Service Providers
// ... Package Service Providers
// ... Application Service Providers
App\Repositories\RepositoryServiceProvider::class, // ✅ Repository bindings
App\Services\ServiceServiceProvider::class, // ✅ Service bindings
App\Providers\AppServiceProvider::class,
// ...
],