Aller au contenu

La commande bin/edu

Nous avons mise en place une commande pour faciliter les taches. Cette commande est appelée "edu". Vous pouvez l'utiliser à la racine de votre projet en tapant la commande suivante :

php bin/edu 

Exemple de commande

Voici un exemple, pour démarrer l'application, vous pouvez taper la commande suivante

php bin/edu start

Ce résultat est un exemple et il ne sera probablement pas le vôtre.

Screen Start Edu App

Pour voir les commandes disponibles, vous pouvez taper la commande suivante :

php bin/edu list

Voici les commandes disponibles par version :

Composants Description A partir de la version
start pour démarrer l'application v1.2
list pour lister les commandes disponibles v1.2
check:config check la configuration de votre environnement v1.2
make:controller génération d'un controller v1.0
make:api génération d'un controller type json API v2.0
make:command génération d'un commande line v2.0
make:entity génération d'une entité et son repository v2.5.0
cache:clear suppression du cache de l'application v2.4.0
make:deploy génération de la configuration de déploiement v2.9.0
routes:list liste des routes de l'application v2.12.0

Pour aller plus loin

Vous pouvez consulter la page Construire une API pour plus de détails sur la commande make:api.

Les options de la commande start

La commande start accepte des options pour adapter le démarrage à vos besoins (à partir de la version v2.3.0) :

php bin/edu start --no-start
Option Description
-p ou --port Change le port d'écoute du serveur de développement (défaut : 8042)
--no-start Vérifie les prérequis de votre environnement sans démarrer le serveur

Pour aller plus loin

Vous pouvez consulter la page Start/Stop l'application pour plus de détails sur la commande start.

La commande cache:clear

Les templates Twig sont compilés puis mis en cache dans le dossier var/cache/twig (à partir de la version v2.4.0). Pour supprimer le cache de l'application, vous pouvez taper la commande suivante :

php bin/edu cache:clear
Élément Détail
Dossier concerné var/cache (configurable via la clé cache_path)
Contenu supprimé tout le contenu du dossier (Exemple: le cache TWIG)
Le dossier lui-même conservé

Si le dossier var/cache n'existe pas, un message vous indique qu'il n'y a aucun cache à supprimer.

Recompilation automatique

Les templates modifiés sont automatiquement recompilés (option auto_reload de Twig). La commande cache:clear reste utile pour repartir d'un cache vierge, par exemple après un déploiement.

La commande routes:list

La commande routes:list affiche les routes déclarées dans le fichier app/Config/routes.yaml, dans l'ordre du fichier :

php bin/edu routes:list
 --------- ------------------------- -------------------------------------- ---------------- 
  Méthode   URI                       Contrôleur                             Nom             
 --------- ------------------------- -------------------------------------- ---------------- 
  GET       /                         Controller\HomeController              index           
  GET       /user/{id}                Controller\UserController              user            
  POST      /user/{id}                Controller\UserController              user            
  GET       /medecin                  Controller\MedecinController::index    medecin         
 --------- ------------------------- -------------------------------------- ---------------- 
Colonne Détail
Méthode une ligne par méthode HTTP : une route [GET, POST] occupe deux lignes
URI l'URI telle qu'écrite dans routes.yaml (Exemple: /user/{id:\d+}[/{name}])
Contrôleur le controller appelé, avec la méthode éventuelle (::index)
Nom le nom de la route (clé du fichier routes.yaml), utilisé par getNameToPath()

L'option --method (ou -m) n'affiche que les routes d'une méthode HTTP : php bin/edu routes:list --method=POST.

Une route mal décrite dans routes.yaml est signalée par le même message d'erreur qu'au chargement d'une page.

Routes internes

Les routes de la barre de debug (/_debug/profiler, /edu-logs…), ajoutées uniquement en mode dev, ne sont pas listées.

La commande make:deploy

La commande make:deploy génère le fichier frankendeploy.yaml qui décrit le déploiement de l'application sur un serveur Debian ou Ubuntu avec FrankenDeploy (à partir de la version v2.9.0) :

php bin/edu make:deploy --domain=mon-app.fr

Pour aller plus loin

Vous pouvez consulter la page Déployer son application pour le détail des options et des étapes du déploiement.

La commande make:entity

La commande make:entity génère les deux fichiers du modèle pour une table de votre base de données (à partir de la version v2.5.0) :

  • app/Entity/Ville.php : l'entité, représentation logique d'une table en classe
  • app/Repository/VilleRepository.php : le repository, qui regroupe tous les traitements sur la table
php bin/edu make:entity Ville

La commande demande alors les champs de la table un par un : le nom du champ (une valeur vide met fin à la saisie) puis son type (string, int, float, bool, string par défaut).

Vous pouvez aussi passer les champs directement avec l'option --fields :

php bin/edu make:entity Ville --fields "nom:string,code_postal:string,nombre_habitant:int"

Ce que la commande génère

L'entité possède un identifiant id (entier), un constructeur qui hydrate tous les champs, des getters et des setters fluides :

class Ville
{
    private int $id;
    private string $nom;
    // ...

    public function __construct(int $id, string $nom, string $code_postal, int $nombre_habitant) { /* ... */ }

    public function getId(): int { /* ... */ }
    public function getNom(): string { /* ... */ }
    public function setNom(string $nom): self { /* ... */ return $this; }
    // ...
}

Pas de setId()

Il n'y a pas de setter pour l'identifiant : c'est la base de données qui l'attribue (auto-incrément). Pour créer une entité, on utilise l'identifiant 0 : new Ville(0, 'Paris', '75000', 2200000).

Le repository possède la méthode de lecture getVilles() : la requête SELECT * FROM ville et l'hydratation de l'entité sont déjà écrites.

La table doit exister

La commande génère le code PHP, mais ne crée pas la table dans la base de données. Vous devez créer la table au préalable (voir le schéma de la base de données).

Si l'entité ou le repository existe déjà, une exception EntityAlreadyExistsException est levée.


Si vous rencontrez une erreur

Command no found

Si vous avez une erreur pour utiliser la commande "edu", vous pouvez l'installer avec les commandes suivantes :

Pour installer la commande "edu", suivre les instructions :

Ouvrir un terminal git bash à la racine de votre projet

mkdir bin && curl -o bin/edu https://raw.githubusercontent.com/studoo-app/edu-framework/main/bin/edu

curl: (35)

Si vous rencontrez une erreur curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - The revocation function was unable to check revocation for the certificate.

Saisir la commande suivante :

curl --ssl-no-revoke -o bin/edu https://raw.githubusercontent.com/studoo-app/edu-framework/main/bin/edu

Pour installer la commande "edu", suivre les instructions :

Ouvrir un terminal à la racine de votre projet

mkdir bin && curl -sS https://raw.githubusercontent.com/studoo-app/edu-framework/main/bin/edu -o bin/edu