codemonster-ru / annabel
Elegant and lightweight PHP framework for modern web applications
Installs: 47
Dependents: 2
Suggesters: 1
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/codemonster-ru/annabel
Requires
- php: >=8.2
- codemonster-ru/errors: ^1.0
- codemonster-ru/razor: ^1.0
- codemonster-ru/support: ^1.0
- codemonster-ru/view-php: ^2.0
Requires (Dev)
- phpunit/phpunit: ^9.6 || ^10.5 || ^11.0 || ^12.0
Suggests
- codemonster-ru/ssr-bridge: Enable Vue/React/Svelte SSR rendering bridge
README
Elegant and lightweight PHP framework for modern web applications.
Installation
composer require codemonster-ru/annabel
Quick Start
// public/index.php require __DIR__ . '/../vendor/autoload.php'; $app = require __DIR__ . '/../bootstrap/app.php'; $app->run(); // bootstrap/app.php use Codemonster\Annabel\Application; $baseDir = __DIR__ . '/..'; $app = new Application($baseDir); require "$baseDir/routes/web.php"; return $app; // routes/web.php router()->get('/', fn() => view('home', ['title' => 'Welcome to Annabel']));
CLI
Annabel ships with a lightweight CLI similar to Laravel's artisan. It already supports:
about- show version, base path, and loaded providersroute:list- list registered routesconfig:get key- read a config valuecontainer:list- show container bindings/instancesserve- run PHP built-in server (default 127.0.0.1:8000)- With
codemonster-ru/databaseinstalled:make:migration,migrate,migrate:rollback,migrate:status,make:seed,seed(appear inannabel list; connection is checked when commands run)
php vendor/bin/annabel php vendor/bin/annabel help php vendor/bin/annabel help list
Database Integration
Annabel ships with first-class integration for
codemonster-ru/database.
1. Create config/database.php
return [ 'default' => 'mysql', 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => '127.0.0.1', 'port' => 3306, 'database' => env('DB_NAME'), 'username' => env('DB_USER'), 'password' => env('DB_PASS'), 'charset' => 'utf8mb4', ], 'sqlite' => [ 'driver' => 'sqlite', 'database' => base_path('database/database.sqlite'), ], ], ];
2. Usage
// Query builder $users = db()->table('users')->where('active', 1)->get(); // Schema builder schema()->create('posts', function ($table) { $table->id(); $table->string('title'); }); // Transactions transaction(function () { db()->table('logs')->insert(['type' => 'created']); });
Helpers
| Function | Description |
|---|---|
app() |
Access the application container |
base_path() |
Resolve base project paths |
config() |
Get or set configuration values |
env() |
Read environment variables |
dump() / dd() |
Debugging utilities |
request() |
Get current HTTP request |
response() / json() |
Create HTTP response |
router() / route() |
Access router instance |
view() |
Render or return view instance |
session() |
Access session store |
db() |
Get the active database connection |
schema() |
Get the schema builder |
transaction() |
Execute a DB transaction |
All helpers are autoloaded automatically.
Testing
composer test