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 :
Exemple de commande
Voici un exemple, pour démarrer l'application, vous pouvez taper la commande suivante
Ce résultat est un exemple et il ne sera probablement pas le vôtre.
Pour voir les commandes disponibles, vous pouvez taper la commande suivante :
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) :
| 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 :
| É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 :
--------- ------------------------- -------------------------------------- ----------------
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) :
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 classeapp/Repository/VilleRepository.php: le repository, qui regroupe tous les traitements sur la table
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 :
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 :