---
title: Qu'est-ce que Nibiru ?
description: Une visite de 90 secondes de Nibiru — ce que signifie MMVC, ce qu'il y a dans la boîte, et pour qui c'est fait.
---

**Nibiru** est un framework PHP MVC modulaire — *MMVC* — construit pour le **prototypage rapide** sans renoncer à la discipline d'un véritable framework. Assez petit pour tenir dans votre tête, et assez puissant pour soutenir des applications de production comme celles présentées sur la [page Vitrine](/fr/showcase/projects/).

Le nom est un clin d'œil à l'astronomie babylonienne : **Nibiru** était le point de croisement céleste associé à Marduk, le dieu principal de Babylone. Le framework fonctionne sur la même idée — un point unique par lequel vos modules, contrôleurs, vues et données se croisent.

## Ce qui est dans la boîte

| | |
|---|---|
| **Routage & dispatch** | Analyse de motif URL + URLs SEO, 404 doux, recherche automatique d'action. |
| **MVC + un second M** | Contrôleurs, Vues (Smarty), Modèles, plus des **Modules** de première classe avec traits, plugins, interfaces, paramètres et un pattern observer. |
| **Multi-bases** | MySQL natif, PDO, PostgreSQL via libpq (`psql`/`postgresql`) et ODBC, le tout derrière un adaptateur `Db` unifié. |
| **Formulaires** | Plus de 28 types de champs construits fluidement avec `Form::addInputType…()` et un assistant de layout pour les divs. |
| **Pagination** | Consciente de l'URL (`/controller/action/page/N`) avec des assistants de template. |
| **Auth** | Basée sur session avec identifiants déchiffrés en AES, formulaire de connexion pré-construit par le module `Users`. |
| **CLI (`./nibiru`)** | Génère modules, contrôleurs, plugins ; exécute les migrations ; nettoie les caches ; gère les pages CMS. |
| **Prêt pour Composer** | Smarty 3, PHPMailer, Guzzle, Laminas Diactoros, client OpenAI, client Elasticsearch, codes QR, codes-barres, outils blockchain. |

## Ce que MMVC veut vraiment dire

La plupart des frameworks PHP vous donnent Modèle–Vue–Contrôleur. Nibiru ajoute un second **M** : **Module**.

Un module est une unité auto-contenue qui peut contenir :

- une classe principale implémentant `IModule` (et optionnellement `SplSubject` pour le pattern observer),
- des **traits** pour un comportement réutilisable,
- des **plugins** pour des services sans état injectés dans les contrôleurs,
- des **interfaces** pour les contrats,
- des **paramètres** sous forme de fichiers `.ini` auto-découverts par le [Registre](/fr/core/registry/).

Les modules favorisent le couplage faible et vous permettent de garder "users", "billing", "shop", "tpms" etc. dans leurs propres dossiers sans polluer `application/controller/`.

```
application/module/users/
  ├── users.php             # classe principale (implémente IModule, SplSubject)
  ├── interfaces/           # contrats
  ├── plugins/              # services sans état (User, Acl…)
  ├── settings/             # config .ini auto-chargée par le Registre
  └── traits/               # méthodes réutilisables
```

## Le cycle de vie d'une requête, en une respiration

```mermaid
flowchart LR
  A[index.php] --> B[core/framework.php]
  B --> C[Dispatcher::run]
  C --> D[Router::route]
  D --> E[Auto::loader<br/>modèles + modules]
  E --> F[applicationController.php]
  F --> G[navigationAction]
  G --> H[customAction?]
  H --> I[pageAction]
  I --> J[Display::display<br/>rendu Smarty]
```

Chaque requête exécute `navigationAction()`, puis (optionnellement) la `_action`Action correspondante et enfin `pageAction()`. Si le fichier de contrôleur est introuvable, Nibiru rend le template d'erreur configuré — un *404 doux*.

:::tip[Vous venez de Laravel ou Symfony ?]
Vous serez comme chez vous avec Contrôleurs, Vues et Modèles. Les différences :

- **Pas de conteneur de services** — Nibiru s'appuie sur des **singletons** (`Config`, `Router`, `Registry`, `Dispatcher`).
- **Pas d'Eloquent / Doctrine** — les Modèles sont auto-générés depuis votre schéma de base de données par `Model::__construct(false)`.
- **Smarty, pas Blade ou Twig** — mais la mémoire musculaire est la même.
:::

## Pour qui est Nibiru

- **Hackers et prototypeurs** qui veulent livrer une application web fonctionnelle ce week-end.
- **Fondateurs solo et petites équipes** maintenant de vraies applications de production sans porter le poids d'un méga-framework.
- **Équipes curieuses de PHP** qui veulent PostgreSQL, MySQL et une CLI dès le premier jour.

Prêt ? [Installer Nibiru →](/fr/start/installation/)
