ironflow / core
IronFlow Framework Core - A modern, modular PHP framework for API-first applications
1.0.0
2025-08-06 16:10 UTC
Requires
- php: >=8.1
- monolog/monolog: ^3.9
- nesbot/carbon: ^3.10
- nikic/fast-route: ^1.3
- psr/container: ^2.0
- psr/http-message: ^1.0
- respect/validation: ^2.4
- symfony/console: ^6.0
- symfony/dependency-injection: ^6.0
- symfony/http-foundation: ^6.0
- symfony/password-hasher: ^7.3
- symfony/process: ^7.3
- symfony/security-core: ^7.3
- symfony/translation: ^7.3
- symfony/var-dumper: ^6.0
- symfony/yaml: ^7.3
- twig/twig: ^3.21
- vlucas/phpdotenv: ^5.4
Requires (Dev)
- fakerphp/faker: ^1.23
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2025-08-20 16:26:38 UTC
README
IronFlow est un framework PHP moderne, modulaire et API-first, conçu pour la création rapide d'applications web et microservices robustes.
Sommaire
- Installation
- Architecture
- Démarrage rapide
- Exemples d'utilisation
- ORM & Migrations
- Tests
- Extensibilité
- Sécurité
- Contribuer
Installation
composer require ironflow/core
Architecture
src/ Core/ Kernel.php # Cœur du framework Console/ # Console et commandes personnalisées Container/ # Container d'injection de dépendances Database/ # ORM, QueryBuilder, modèles Exception/ # Gestion des exceptions et erreurs Http/ # Requêtes, réponses, routeur, middlewares Module/ # Système de modules/plugins
Démarrage rapide
use IronFlow\Core\Application; $app = new Application(); $response = $app->handleRequest(); $response->send();
Exemples d'utilisation
Définir une route
$router->get('/hello', function() { return 'Hello World!'; });
Utiliser un middleware
$kernel->addMiddleware(new \IronFlow\Core\Http\Middleware\CorsMiddleware());
Créer un module
class BlogModule extends ModuleProvider { public function register() { // ... } } $moduleManager->register(new BlogModule());
Rendu Twig (template)
use IronFlow\Core\View\TwigService; $twig = new TwigService(__DIR__ . '/views'); echo $twig->render('home.html.twig', ['user' => 'Kinga']);
Validation métier avec Respect\Validation
use IronFlow\Core\Validation\Validator; use Respect\Validation\Validator as v; $validator = new Validator(); $validator->setRules([ 'email' => v::email()->notEmpty(), 'age' => v::intVal()->min(18) ]); $data = ['email' => 'test@example.com', 'age' => 20]; if (!$validator->validate($data)) { print_r($validator->errors()); }
Logging avec Monolog
use IronFlow\Core\Logger\LoggerService; $logger = new LoggerService(); $logger->info('Nouvelle connexion utilisateur', ['user' => 'Kinga']); $logger->error('Erreur critique', ['exception' => $e]);
Injection automatique via le container
$container->singleton(TwigService::class, fn() => new TwigService(__DIR__.'/../views')); $container->singleton(Validator::class, fn() => new Validator()); $container->singleton(LoggerService::class, fn() => new LoggerService()); class UserController { public function __construct( TwigService $twig, Validator $validator, LoggerService $logger ) { /* ... */ } }
ORM & Migrations
IronFlow inclut un ORM léger et fluide, similaire à Laravel Blueprint, nommé Anvil
, et un système de migration inspiré d'Eloquent.
Exemple de migration
use IronFlow\Core\Database\Anvil; use IronFlow\Core\Database\Migration; use IronFlow\Core\Database\Schema; return new class extends Migration { public function up(): void { Schema::create('users', function (Anvil $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->timestamps(); }); } public function down(): void { Schema::drop('users'); } };
Méthodes disponibles avec Anvil
id()
string($name, $length = 255)
integer($name)
boolean($name)
timestamp($name)
timestamps()
text($name)
enum($name, array $values)
foreign($column)->references($target)->on($table)
nullable()
default($value)
unique()
index()
Tests
Lancez les tests unitaires :
vendor\bin\phpunit
Extensibilité
Modules/Plugins
- Ajoutez vos modules dans
src/Core/Module/
en créant une classe qui étendModuleProvider
. - Exemple d'ajout d'un module externe :
use IronFlow\Core\Module\ModuleManager; use App\Modules\Blog\BlogModule; $moduleManager = new ModuleManager($container); $moduleManager->register(new BlogModule()); $moduleManager->bootModules();
- Un module doit implémenter la méthode
register(Container $container)
et peut surchargerboot()
pour l'initialisation.
Hooks & Events
- Le cœur fournit un dispatcher d'événements (
EventDispatcher
). - Exemple d'écoute et de déclenchement d'un hook :
use IronFlow\Core\Events\EventDispatcher; $events = new EventDispatcher(); $events->listen('user.registered', function($user) { // Action personnalisée }); // Plus tard dans le code : $events->dispatch('user.registered', $user);
- Les modules peuvent s'abonner à des événements du cœur ou en émettre pour permettre l'extension sans modifier le code principal.
Sécurité
- Middlewares pour CORS, CSRF, XSS, validation d'entrée
- Gestion centralisée des erreurs et logs
Documentation API
- Les classes et méthodes publiques sont documentées avec des DocBlocks PHP
- Générez la documentation avec phpDocumentor
Contribuer
Les contributions sont les bienvenues ! Merci de lire le guide de contribution dans CONTRIBUTING.md
.