Dimtrovich Console
Une console PHP légère et puissante, sans framework imposé

Bonjour à tous !

Je viens vous présenter un projet sur lequel je travaille depuis quelques mois : Dimtrovich Console.

Le constat

Si vous avez déjà eu besoin de créer un outil en ligne de commande en PHP, vous avez probablement été confronté à ce choix :

- Soit vous utilisez Symfony Console ou Laravel Artisan... et vous vous retrouvez à embarquer des centaines de fichiers, des conteneurs de dépendances, tout un écosystème conçu pour des frameworks entiers, juste pour faire quelques commandes simples.
- Soit vous faites du "from scratch"... et vous passez votre temps à réinventer la roue : parsing des arguments, gestion des couleurs, affichage des tableaux, etc.

La solution

Dimtrovich Console se positionne pile au milieu. C'est une surcouche puissante construite au-dessus de l'excellente librairie adhocore/cli (dont je suis contributeur). Mention spéciale à @adhocore pour son travail qui m'a servi de base solide.

Les points forts :

- Légèreté : 1 seule dépendance (adhocore/cli), pas de framework imposé
- Simplicité : Vous n'importez que ce dont vous avez besoin
- Richesse : Des fonctionnalités aussi avancées que les grosses solutions

Fonctionnalités

Malgré sa légèreté, le package propose tout ce dont on peut rêver pour une console :

Alertes stylisées, badges colorés, barres de progression animées avec statistiques, spinners, graphiques ASCII (barres, camemberts), tableaux, grilles, menus interactifs, auto-complétion, art ASCII pour les bannières, 8 thèmes visuels (sombre, clair, solarisé, monokai, etc.), internationalisation avec traductions françaises intégrées, et même des notifications desktop.

Installation


composer require dimtrovich/console


C'est tout. Pas de configuration, pas de providers à enregistrer, pas de conteneur à initialiser.

Un exemple complet


use Dimtrovich\Console\Command;
use Dimtrovich\Console\Application;

class BackupCommand extends Command
{
    protected string $name = 'backup:run';
    protected string $description = 'Lance une sauvegarde';

    public function handle()
    {
        $this->alert()->info('Début de la sauvegarde', 'BACKUP');
        
        $this->withProgressBar(5, function($bar) {
            for ($i = 0; $i < 5; $i++) {
                sleep(1);
                $bar->advance();
            }
        });
        
        $this->alert()->success('Sauvegarde terminée !');
        $this->chart(['BDD' => 45, 'Fichiers' => 35, 'Logs' => 20], 'pie');
    }
}

$app = Application::create('Mon Outil', '1.0.0')
    ->withLocale('fr')
    ->withTheme('dark')
    ->withCommands([BackupCommand::class])
    ->run();


Pour qui ?

Ce package est fait pour vous si vous développez un outil autonome sans vouloir embarquer un framework entier, si vous avez besoin d'une console dans un projet legacy sans tout réécrire, ou si vous êtes simplement sensible à la taille de vos dépendances.

Documentation

Le README est très complet (et en français !)
https://github.com/dimtrovich/php-console/blob/main/README-FR.md

Vos retours

C'est mon premier package dont j'en parle en public. J'aimerais vraiment avoir vos avis : la documentation est-elle claire ? Des fonctionnalités manquantes ? Des bugs ? N'hésitez pas à tester et à me faire vos retours !

Liens

- GitHub : https://github.com/dimtrovich/php-console (les étoiles et vos éventuels PR sont les bienvenues et me feraient un grand plaisir!)
- Packagist : https://packagist.org/packages/dimtrovich/console

Merci d'avance pour vos retours !

modération : amélioration lien readme fr
Modifié par Niuxe (14 Feb 2026 - 13:36)
Bonjour, j'apprécie SymfCons et LaraCli mais pourquoi je confierai mon CLI à des tiers que on sait pas vraiment. Je dois paraitre un peu youpi tralala mais bon le pseudo quoi. En tout cas, force au projet.
Hello !

Je salue grandement le projet parce que cela implique un travail de fond conséquent de publier un package dans le domaine publique.

Par contre, en consultant le dépôt je vois que la totalité des commits ont été effectués en moins d'une semaine. Et vu la quantité de lignes de code ça soulève des questions Smiley smile
Anymah a écrit :
Hello !
Par contre, en consultant le dépôt je vois que la totalité des commits ont été effectués en moins d'une semaine. Et vu la quantité de lignes de code ça soulève des questions Smiley smile


Bonsoir Anymah et merci pour ton retour.

En effet le projet, tel que tu le vois, a été fait en une semaine. Néanmoins, ça ne devrait pas être source de questionnement.
J'utilise beaucoup le package adhocore/cli, et d'ailleurs, je suis un contributeur à ce package (3e). C'est un package génial et sans une centaine de dépendance inutiles mais, il se concentre beaucoup sur les aspects généraux ce qui fait que, pour certaines choses, j'étais alors obligé de les écrire encore et encore à chaque fois. J'ai donc décidé de créer ce package comme étant une surcouche qui étend adhocore.
Si vous consultez le readme du package adhocore, vous vous rendrez vite compte de ça (déjà dès la définition des commandes)

Je n'ai pas commencé ce travail il y'a une semaine, ça existait déjà dans un autre projet et j'ai juste extrait le code de là, le refactoriser de manière à faire un package indépendant qui pourrait s'intégrer à n'importe quel projet.
Niuxe a écrit :


ex nihilo Smiley cligne


Smiley biggrin Smiley biggrin J'avoue que le terme était un peu fort. Mais l'esprit ici était "sans trop de dépendance". En effet sa seule dépendance est adhocore/cli qui elle même n'a aucune dépendance
KassanWebQuizz a écrit :
Bonjour, j'apprécie SymfCons et LaraCli mais pourquoi je confierai mon CLI à des tiers que on sait pas vraiment.


Oui c'est vrai, c'est 2 là, on fait leur preuves et n'ont plus rien à prouver mais voit tu, eux aussi ils ont commencé quelques part.

Avant je me posais la question de savoir pourquoi est-ce qu'on a créé Laravel alors que Symfony existait déjà, cakephp existait déjà. Pourquoi on a créé pnpm alors qu'il y avait déjà npm et yarn qui faisaient le taf

En réalité chaque solution est là pour résoudre une problématique. Ma problématique est simple, éviter au maximum le trop plein de dépendance. D'ailleurs, c'est la raison pour laquelle pour certains projets, je travaille avec CodeIgniter plutôt que Symfony/Laravel car il y'a par de centaines de dépendance inutiles qui vous te polluer le PC.

Ce package s'adresse donc à ce type de personnes qui souhaitent avoir les fonctionnalités digne d'un CLI sans avoir à télécharger tous les polyfill de Symfony
KassanWebQuizz a écrit :
Bonjour, j'apprécie SymfCons et LaraCli mais pourquoi je confierai mon CLI à des tiers que on sait pas vraiment.


Oui c'est vrai, ces 2 là, on fait leur preuves et n'ont plus rien à prouver mais voit tu, eux aussi ils ont commencé quelques part.

Avant je me posais la question de savoir pourquoi est-ce qu'on a créé Laravel alors que Symfony existait déjà, cakephp existait déjà. Pourquoi on a créé pnpm alors qu'il y avait déjà npm et yarn qui faisaient le taf

En réalité chaque solution est là pour résoudre une problématique. Ma problématique est simple, éviter au maximum le trop plein de dépendance. D'ailleurs, c'est la raison pour laquelle pour certains projets, je travaille avec CodeIgniter plutôt que Symfony/Laravel car il y'a par de centaines de dépendance inutiles qui vous te polluer le PC.

Ce package s'adresse donc à ce type de personnes qui souhaitent avoir les fonctionnalités digne d'un CLI sans avoir à télécharger tous les polyfill de Symfony
Modifié par Dimtrovich (16 Feb 2026 - 21:29)
Dimtrovich a écrit :
Je n'ai pas commencé ce travail il y'a une semaine, ça existait déjà dans un autre projet et j'ai juste extrait le code de là, le refactoriser de manière à faire un package indépendant qui pourrait s'intégrer à n'importe quel projet.


C'était pas une remarque négative. Quand j'ai lu que tu travaillais depuis plusieurs mois sur le projet, je me suis posé la question Smiley smile

D'ailleurs, j'ai vu que tu utilisais des conventions de nommage pour tes commits, mais pas de manière systématique. Fais-le jusqu'au bout et ça aura meilleure allure.

Dernièrement, as-tu songé à publier le projet avec une licence GPL ? Avec une licence MIT, les développeurs peuvent s'approprier de ton travail et sans être obligés de laisser en open-source.

Force à toi pour la suite, l'idée est bonne !