🧙♂️
Créer un nouveau projet avec Composer Les étapes à suivre :
composer init
Cette commande va nous permettre de créer le fichier racine 'composer.json' Plusieurs informations vont nous être demandées :
- Le nom du package (vendor/name) : Vendor correspond au nom de votre entreprise, Name correspond au nom de votre librairie (ex : Devu/Developp).
- La description du package qui permet d'indiquer les informations sur votre projet.
- Les auteurs du projet.
- La stabilité minimum des librairies installées au projet (il est recommandé de mettre
stable
pour indiquer le niveau le plus haut. - Le type de package/projet que l'on crée (indiquer
project
s'il s'agit d'un projet complet oulibrary
s'il a pour objectif d'être appelé dans d'autres projets plus importants. - Les dépendances (require et required-dev), elles peuvent être définies plus tard.
Le
require
correspond aux packages que l'on va ajouter au projet,require dev
correspond au packages qui ne seront utilisés qu'en milieu de développement.
Ajouter l'autoloading à composer.json
Sous l'attribut require
, ajouter l'attribut autoload
en psr-4 comme ceci :
"autoload": {
"psr-4": {
"App\\": ""
}
}
Installer composer
avec la commande :
composer install
Il ne vous reste plus qu'à installer les librairies nécessaires à votre projet.
⁉️ Plus d'informations avec la Notice Composer
Les packs de base à installer dans un nouveau projet
Installer des librairies externes avec la commande :
composer require {lib} {version}
Désinstaller une librairie externe avec la commande :
composer remove vendor/{lib}
Quelques packs indispensables :
- "symfony/var-dumper" : Permet de mieux visualiser les processus avec la fonction
dump()
- "doctrine/orm" : Permet d'intéragir avec la base de données
- "twig/twig" : Permet d'utiliser Twig, le moteur de templates utilisé par Symfony
Quelques packs utiles :
- "cocur/slugify" : Permet de convertir simplement des chaines de caractères en slugs
- "swiftmailer/swiftmailer" : Permet d'envoyer un grand nombre de mails plus facilement
Pour mettre à jour un projet
Mettre à jour une librairie en particulier
composer update {lib}
Mettre à jour toutes les librairies (déconseillé)
composer update
Création des fichiers sources
Dans notre exemple, nous allons tout d'abord créer 3 dossiers :
- Entity : Qui contiendra les classes (User.php, Article.php, etc)
- Repository : Qui contiendra les repositories des classes
- template : Qui contiendra les fichiers twig
Nous allons ensuite créer un fichier initialisation.php
qui contiendra ceci :
<?php
require __DIR__."/vendor/autoload.php";
$params = require __DIR__."/parameters.php";
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Twig\Loader\FilesystemLoader;
use Twig\Environment;
$paths = array(__DIR__."/Entity");
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false);
$entityManager = EntityManager::create($params['db'], $config);
$loader = new FilesystemLoader(__DIR__.'/Views');
$twig = new Environment($loader, [
'cache' => false,
]);
session_start();
Puis le fichier parameters.php
qui va nous permettre de nous connecter à la base de données :
<?php
return [
'db' =>
[
'driver' => 'pdo_mysql',
'user' => 'root',
'password' => '',
'dbname' => 'shiatsu78',
]
];
et enfin, un fichier cli-config.php
:
<?php
use Doctrine\ORM\Tools\Console\ConsoleRunner;
require_once 'initialisation.php';
return ConsoleRunner::createHelperSet($entityManager);
Modèle des controllers
Voilà, tous nos fichiers sources sont prêts, il ne reste plus qu'à démarrer notre projet, nos fichiers php devraient ressembler maintenant à ceci (ex: index.php) :
<?php
require __DIR__ . "/initialisation.php";
echo $twig->render('homepage.html.twig', [
'title' => 'Mon site web',
'isConnected' => isset($_SESSION['isConnected']),
]);
Modèle des views
Pour les fichiers twig, je recommande tout d'abord de créer le fichier de base qui comprendra le header, appelons-le donc sobrement base.html.twig
:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{ title|default('Titre par défaut de mon site web') }}</title>
<link rel="icon" type="image/png" href="favicon.png">
<link rel="stylesheet" href="../src/style.css">
</head>
<body>
{% block body %}
<header>
{% block header %}{% endblock %}
</header>
<main>
{% block main %}{% endblock %}
</main>
<footer>
{% block footer %}{% endblock %}
</footer>
{% endblock %}
<script type="text/javascript" src="../src/style.js"></script>
</body>
</html>
Puis les autres fichiers twig étendront ce fichier de base et ressembleront simplement à ceci :
{% extends 'base.html.twig' %}
{% block main %}
<h1>Titre de ma page</h1>
{% endblock %}
Installation de projets via Github
composer install
*Créer la base de données si nécessaires, puis changer les informations de connexion.
Informations complémentaires
En ligne, le fichier parameters.php
sera de la forme :
<?php
return [
'db' =>
[
'driver' => 'pdo_mysql',
'user' => 'usertc',
'password' => 'Pas$w0rd',
'dbname' => 'usertc',
'host' => 'usertc.mysql.db'
]
];
Pour mettre à jour sa base de données en ligne de commande :
vendor/bin/doctrine orm:schema-tool:update --dump-sql --force
Pour lancer le serveur local :
php -S localhost:8080