Canvas Framework
A lightweight PHP framework designed for clarity. Route with annotations, query with ObjectQuel ORM, and let contextual containers resolve dependencies automatically.
Core Concepts
Six integrated features that simplify PHP development.
🚀 Auto-Discovery
Controllers, services, and packages are discovered through Composer metadata. No configuration files required.
🎯 Annotation Routes
Route definitions live in controller methods using @Route annotations. No separate routing files.
📦 Contextual Containers
Code against interfaces. Canvas resolves implementations based on request context.
⚡ Aspect-Oriented Programming
Separate crosscutting concerns—caching, authentication, logging—from business logic using aspects.
🗄️ ObjectQuel ORM
Query language designed for PHP syntax patterns. Write queries that read like native code.
🔄 Legacy Integration
Add Canvas to existing applications incrementally. Legacy URLs remain functional while you adopt Canvas services gradually.
Example Controller
Basic Canvas controller structure:
<?php
namespace App\Controllers;
use Quellabs\Canvas\Annotations\Route;
use Quellabs\Canvas\Controllers\BaseController;
use App\Entities\UserEntity;
class UserController extends BaseController {
/**
* @Route("/users")
*/
public function index() {
// ObjectQuel ORM query
$users = $this->em()->findBy(UserEntity::class, ['active' => true]);
// Template rendering with automatic resolution
return $this->render('users/index.tpl', compact('users'));
}
}