splinter / framework
Splinter — lightweight PHP micro-framework core (DI, routing, ORM, HTTP, console, queues)
Requires
- php: ^8.2
- bramus/router: ^1.6
- illuminate/database: ^11.0
- php-di/php-di: ^7.1
- predis/predis: ^2.2
- robmorgan/phinx: ^0.16
- symfony/console: ^7.4
- symfony/http-client: ^7.4
- symfony/http-foundation: ^7.4
- symfony/mailer: ^7.4
- vlucas/phpdotenv: ^5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Lightweight PHP micro-framework core: DI container, routing glue, Eloquent via Capsule, HTTP helpers, console commands and a Redis-backed queue. No view layer, no opinion on authorization — those are separate packages built on top of this core.
Install
composer create-project splinter/skeleton my-service
Entry points
bootstrap/app.php— bootsSplinter\Kernel\HttpKerneland handles the current HTTP request.splinter(CLI, like Laravel'sartisan) — bootsSplinter\Kernel\ConsoleKerneland runs the console application.
Configuration
Every config/*.php file is loaded and exposed under its filename, e.g.
config/app.php is available as $config['app'] inside service
providers. config/app.php controls providers, route files, global
middlewares, and any additional console commands.
Commands
splinter migrate [--connection=default]splinter migrate:rollback [--connection=default] [--target=VERSION]splinter migrate:status [--connection=default]splinter migrate:create <Name>splinter queue:work [queue]
Queue
EventDispatcher pushes listeners implementing Splinter\Contracts\ShouldQueue
onto a Redis list; queue:work consumes it with a retry mechanism, storing
permanently failed jobs in failed_jobs. That table's migration ships
inside this package (database/migrations/) — list both the package path
and your app's db/migrations/ in config/phinx.php (see example).
Not included (by design)
- View/template rendering (Twig) — separate package.
- Authorization/permissions model — separate package.
AccessRuleInterfaceis provided here as a neutral contract; concrete implementations (permission-based, role-based, etc.) live elsewhere.