valec3-backend-architecture-mvc
SKILL.md
Backend Architecture MVC
When to use this skill
- Organizing CodeIgniter applications
- Separating concerns properly
- Building maintainable apps
Workflow
- Controllers handle HTTP requests
- Models handle data logic
- Views handle presentation
- Keep controllers thin
- Business logic in services
Instructions
Controller (Thin)
<?php
namespace App\Controllers;
use App\Services\UserService;
class UserController extends BaseController
{
public function __construct(
private readonly UserService $service
) {}
public function index()
{
$users = $this->service->getAllUsers();
return view('users/index', ['users' => $users]);
}
public function store()
{
$user = $this->service->createUser($this->request->getPost());
return $this->respond($user);
}
}
Model (Data Access)
<?php
namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model
{
protected $table = 'users';
protected $allowedFields = ['name', 'email'];
protected $returnType = 'App\Entities\User';
}
Service (Business Logic)
<?php
namespace App\Services;
class UserService
{
public function __construct(
private UserModel $model
) {}
public function getAllUsers()
{
return $this->model->findAll();
}
}
Resources
- Controllers: thin, route to services
- Models: database operations only
- Services: business logic