mattablues / radix-framework
Radix Framework
Requires
- php: ^8.3
- ext-libxml: *
- dflydev/dot-access-data: ^3.0.2
- psr/container: ^2.0
- psr/event-dispatcher: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.93
- infection/infection: ^0.32
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0
README
Radix Framework
Radix Framework är ett fristående PHP‑ramverk som levereras som ett Composer‑paket.
Det är byggt för att vara enkelt att konsumera från andra projekt – utan att du behöver checka in framework‑kod i din applikation.
För en komplett, körbar referensapp/starter, se:
mattablues/radix-app: https://github.com/mattablues/radix-app
- Installation
- Snabbstart
- Funktioner i Radix Framework (översikt)
- Dokumentation
- Projektlayout
- Autoloading
- För ramverksutvecklare
- Versionering och användning från andra projekt
- Licens
Installation
I en konsumerande applikation:
composer require mattablues/radix-framework
Ramverket kräver:
- PHP 8.3 eller senare inom 8.x‑serien
- Extension:
ext-libxml(för XML‑funktionalitet)
Snabbstart
Ett enkelt exempel på hur Radix kan användas:
<?php declare(strict_types=1); use Radix\File\Reader; use Radix\File\Writer; // Skriv JSON till fil Writer::json(__DIR__ . '/data.json', [ 'id' => 1, 'name' => 'Alice', ]); // Läs tillbaka som assoc-array $data = Reader::json(__DIR__ . '/data.json', assoc: true); var_dump($data); // ['id' => 1, 'name' => 'Alice']
Funktioner i Radix Framework (översikt)
Radix Framework innehåller bland annat:
-
Routing & HTTP
- Flexibel router (
Radix\Routing) med middleware‑stöd (Radix\Middleware) - HTTP‑request/response‑abstraktion (
Radix\Http)
- Flexibel router (
-
Controller‑lager
- Bascontrollers för web och API (
Radix\Controller\AbstractController,AbstractApiController)
- Bascontrollers för web och API (
-
Console & CLI
- Konsolapplikation (
Radix\Console\ConsoleApplication) - Kommandoregister (
CommandsRegistry) - Inbyggda kommandon för bl.a. migrationer och generatorer (
Radix\Console\Commands\...)
- Konsolapplikation (
-
Databas, ORM & migrationer
- Databasanslutningar och manager (
Radix\Database\Connection,DatabaseManager) - Query builder (
Radix\Database\QueryBuilder) - Enkel ORM‑modellering (
Radix\Database\ORM) - Migrationer + CLI‑stöd (
Radix\Database\Migration)
- Databasanslutningar och manager (
-
Container & Service Providers
- Dependency Injection‑container (
Radix\Container\Container,ApplicationContainer) - Definitioner, parametrar och referenser (
Definition,Parameter,Reference,Resolver) - Service providers (
Radix\ServiceProvider)
- Dependency Injection‑container (
-
View‑motor
- Template‑engine med ratio‑templates, extends/yield, komponenter och slots (
Radix\Viewer\RadixTemplateViewer) - Cache‑hantering för vyer och enkla filter
- Template‑engine med ratio‑templates, extends/yield, komponenter och slots (
-
Session & autentiseringsstöd
- Anpassningsbar sessionshanterare (
Radix\Session\RadixSessionHandler) med fil- eller databaserad lagring
- Anpassningsbar sessionshanterare (
-
Fil, dataformat & utilities
- Fil‑ och data‑hjälpare (
Radix\File) för CSV/NDJSON/XML/JSON m.m. - Datum/tid‑hjälpare (
Radix\DateTime) - Stödklasser (
Radix\Support), collections (Radix\Collection), enums (Radix\Enums)
- Fil‑ och data‑hjälpare (
-
Övrigt
- Event dispatcher (
Radix\EventDispatcher) - Mailer‑stöd (
Radix\Mailer) - Felhantering och fel‑svar (
Radix\Error)
- Event dispatcher (
Dokumentation
För en djupdykning i hur Radix fungerar, se:
- Docs-index:
docs/INDEX.md
För en komplett, fungerande applikation som använder ramverket, se:
- Radix App: https://github.com/mattablues/radix-app
Projektlayout
Radix är ett eget repo och konsumeras via Composer:
-
mattablues/radix-frameworkinnehåller själva ramverket. -
Applikationer (t.ex.
mattablues/radix-appeller ditt eget projekt) lägger till ramverket via:composer require mattablues/radix-framework
Ingen framework‑kod ska checkas in direkt i app‑repon.
Autoloading
Ramverket följer PSR‑4:
"autoload": { "psr-4": { "Radix\\": "src/" }, "files": [ "support/helpers.php" ] }
Tester autoloadas via:
"autoload-dev": { "psr-4": { "Radix\\Tests\\": "tests/" } }
För ramverksutvecklare
Det här avsnittet är framför allt för dig som utvecklar själva Radix Framework (inte bara använder det som beroende).
Lokalt dev-setup
I mattablues/radix-framework‑repon:
composer install
Kommandon (composer scripts)
De vanligaste kommandona:
composer format
composer format:check
composer stan
composer test
composer infect
composer infect:pcov
composer infect:xdebug
Direkt från composer.json:
"scripts": { "stan": "phpstan analyse -c phpstan.neon.dist", "test": "php -d xdebug.mode=off vendor/bin/phpunit", "infect": "php tools/infection.php", "infect:pcov": "php tools/infection.php pcov", "infect:xdebug": "php tools/infection.php xdebug", "format": "@php tools/php-cs-fixer.php", "format:check": "@php tools/php-cs-fixer.php --dry-run --diff" }
Tester (PHPUnit)
Ramverket använder PHPUnit 11.
Kör alla tester:
composer test
Statisk analys (PHPStan)
composer stan
Mutationstester (Infection)
composer infect
# eller
composer infect:pcov
composer infect:xdebug
Inställningar finns i infection.json.dist.
Kodstil (PHP-CS-Fixer)
Auto-fix:
composer format
Endast kontroll (bra i CI):
composer format:check
CI (GitHub Actions)
Repo:t innehåller GitHub Actions‑workflows som kör:
- Kodstil (
composer format:check) - Tester (
composer test) - PHPStan (
composer stan) - Schemalagd Infection (om aktiverad i workflow)
Versionering och användning från andra projekt
Rekommenderat:
-
Tagga releaser med semantisk versionering, t.ex.:
git tag -a v0.1.0 -m "First Radix Framework release" git push origin v0.1.0 -
I konsumerande applikation:
composer require mattablues/radix-framework:^0.1
Licens
MIT. Se LICENSE.