Skip to main content Skip to docs navigation

La structure

Je vais reprendre une structure similaire à ce que je fais d'habitude pour un site web.

On reste assez proche de l'architecture MVC, même si la vue ici ce limite à du prompt.

Chaque 'feature' (serveur lemp, mail, initialisation VPS) sera représenter par une Classe qui s'apparente à un contrôleur.

Et je dispose d'un 'engine'/'core' qui m'apporte différentes fonctionnalités "générique" essentielles pour ce type de projet.

Dans ce core, j'ai donc des classes pour l'auto-loading, gérer les entrées Input, gérer les sorties Output, les packages, PDO...

Concept

Afin de bien segmenter les choses, je vais définir six éléments.

  1. les services: Apache2, Nginx, MariaDB, PHP_fpm, Postfix, Dovecot, OpenDKIM, ...
  2. les softs: Certbot, Setfacl (acl), ...
  3. les web services: PostfixAdmin, Roundcube, PhpMyAdmin, ...
  4. les utils (utilitaires): Menu, Validator, Mailset, Www_data, ...
  5. les "Data": représentent des fichiers de configuration: main, master, v-host nginx, ssh_config...
  6. les "Operators": ce sont des classes qui vont utiliser les différentes classes citées ci-dessus.

A ces différents éléments il faut ajouter les classes de l'engine:

  • auto-loading
  • Pdo, Dbo (data base operator)
  • Input
  • Output
  • Table
  • Log
  • Datapi
  • ...

L'objectif de cette structure est de pouvoir implémenter facilement de nouvelles fonctionnalités. Comme on peut le faire pour un site web. On créer notre contrôleur, si le service n'est pas implémenté on le créer. On dispose deja de tous le nécessaire pour gérer un menu, gérer les entrant et sortant.

...
Structure d'Apcli

  1. On démarre le script apcli/bin/starter
  2. Le script lance Apcli, qui définit l'environnement pour lancer l'App
  3. App se lance
  4. L'output est envoyer au niveau du terminal

Le fait de segmenter permet d'éviter de se retrouver avec une classe qui fait plus de 2k de lignes de code. Aussi cela permet de mieux cibler, qu'elle partie du code modifier en cas de problème.

La structure, permet de gérer les erreurs et logger au besoin. Elle apporte un cadre, qui facilite l'implémentation de nouvelles features.


Il lui manque encore peut être un .phar pour faciliter son déploiement.

  • Buildé à la main avec passion.
  • Designed by BootrapCSS, salted by me
  • Currently v0.3.0.
Liens
Guides