nils-framework/nils-core
Composer 安装命令:
composer require nils-framework/nils-core
包简介
Le cœur applicatif complet du framework NILS (Routage, Configuration, Gestionnaire d'erreurs)
README 文档
README
Markdown
NILS Framework Core (nils-core)
Le composant nils-core est le moteur central, découplé et ultra-performant du framework PHP NILS. Il prend en charge l'intégralité du cycle de vie de la requête HTTP (Request-Response Lifecycle), de l'aiguillage automatique par réflexion à l'injection magique d'arguments.
Ce composant est conçu de manière 100 % agnostique : il n'embarque aucune logique métier ni dépendance forte envers les modules optionnels d'authentification ou de base de données.
🚀 Fonctionnalités Clés
- Routage par Attributs PHP 8 : Déclaration native des routes directement au-dessus des méthodes des contrôleurs (
#[Get],#[Post]...). - Auto-discovery (Découverte Automatique) : Scan intelligent de la cartographie PSR-4 de Composer pour charger vos contrôleurs sans configuration manuelle.
- Compilation d’Arbre (Trie Tree) : Résolution algorithmique des routes en temps constant $O(N)$ (indépendant du nombre total de routes).
- Mise en Cache Atomique : Sérialisation de l'arbre compilé en fichier PHP natif pour annuler le coût de la réflexion en production.
- Pipeline Intergiciel (IoC Middlewares) : Système d'Inversion de Contrôle permettant à des packages externes (
nils-auth,nils-roles) de greffer leur sécurité sur des attributs spécifiques. - Argument Resolver System : Injection automatique et typée des composants requis par vos méthodes (
Request,Body,Query,Params), inspiré du standard industriel Symfony.
📦 Installation
Installez le cœur du framework dans votre application via Composer :
composer require nils-framework/nils-core
Note : Ce package requiert l'existence préalable du package de contrats de votre organisation nils-framework/nils-contracts.
🛠️ Utilisation de Base
1. Déclarer un Contrôleur
Pour être détecté automatiquement par le moteur de routage, votre contrôleur doit simplement implémenter l'interface de marquage ControllerInterface :
PHP
<?php
namespace App\Controllers;
use Nils\Contracts\ControllerInterface;
use core\ValueObjects\Query;
use core\Response;
use core\Attributes\Get;
class PlanningController implements ControllerInterface
{
#[Get('/api/v1/shifts')]
public function listerShifts(Query $query): void
{
$search = $query->get('search', 'default');
Response::json([
'success' => true,
'data' => [['id' => 1, 'statut' => 'assigne']]
]);
}
}
2. Point d'Entrée Global (index.php)
PHP
<?php
require_once __DIR__ . '/vendor/autoload.php';
// 1. Définir la racine de l'application (requis pour le cache et l'autoloader)
define('APP_ROOT', __DIR__);
use core\Request;
use core\Routeur;
$requete = new Request();
$routeur = new Routeur();
// 2. Initialiser et compiler les routes (Lit le cache en production)
$routeur->enregistrerDepuisAnnotations();
// 3. Dispatcher la requête vers le contrôleur correspondant
try {
$routeur->diriger($requete);
} catch (\core\Exceptions\HttpException $e) {
\core\Response::json(['error' => $e->getMessage()], $e->getCode());
}
🏗️ Architecture du Code (src/)
Plaintext
src/
├── Attributes/ # Attributs natifs de verbes HTTP (Get, Post, Put...)
├── Commandes/ # Commandes systèmes CLI du framework
├── Exceptions/ # Gestionnaire d'exceptions HTTP structurées (404, 400...)
├── Intergiciel/ # Middlewares globaux du système (CORS, Handler d'erreurs)
├── params/ # Système scellé de casting de paramètres d'URL ({id:int})
├── Resolvers/ # Ouvriers d'injection de dépendances (Argument Resolvers)
├── ValueObjects/ # Conteneurs de données nettoyées (Body, Query, Headers)
├── Request.php # Représentation orientée objet de la requête HTTP
├── Response.php # Gestionnaire de sorties de flux et de codes HTTP
├── RouteMethode.php# Entité de modélisation d'une route en mémoire
└── Routeur.php # Compilateur et aiguilleur central de l'écosystème
⚙️ Mode Production vs Développement
Le framework adapte son comportement à la constante de débogage de votre application :
Mode Développement (Debug::DEBUG = true) : Le routeur re-parcourt et re-compile les fichiers à chaque requête. Vos modifications de routes sont instantanées.
Mode Production (Debug::DEBUG = false) : Le routeur charge un fichier PHP sérialisé dans /cache/routes.php. Les performances de routage sont maximales.
Pour vider manuellement le cache lors de vos scripts de déploiement (CI/CD) :
PHP
$routeur->viderCache();
📄 Licence
Ce projet est distribué sous licence MIT. Développé avec passion par Traore.
nils-framework/nils-core 适用场景与选型建议
nils-framework/nils-core 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 06 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 nils-framework/nils-core 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 nils-framework/nils-core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 30
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-10