👨💻
Les bases pour débuter un projet en Symfony 4 Voici quelques trucs et astuces basiques mais très utiles lorsque l'on démarre un nouveau projet avec le framework PHP le plus utilisé en France : SYMFONY
Prérequis
Il est conseillé d'avoir la dernière version de composer et la dernière version de node et npm
Recommandé :
Je recommande d'avoir d'installé sur son mac hirak/prestissimo qui permet de gagner en performance et d'accélérer les processus lancés via des commandes terminales, pour cela, dans le terminal, taper simplement :
composer global require hirak/prestissimo
Création d'un projet sous Symfony
composer create-project symfony/skeleton NomDuProjet
Initialisation du projet
Sur l'IDE PHP STORM, pour paramétrer un projet en symfony :
Dansmenu PhpStorm
->Preferences
->plugins
->Browse repositories
et installer "symphony plugin"
Puis dansLanguages & Frameworks
->PHP
->Symfony
-> cocher la case Enable Plugin... -> puis écrire :
Translation Root Path : var/cache/dev/translations
App directory : src
Web directory : public
-> puis apply et OK
Installation du serveur
Le serveur n'est pas intégré par défaut, il faut l'installer
composer require webserver --dev
Si vous n'avez pas la permission :
-> faire php bin/console ou demander la permission : chmod +x bin/console
Lancement du serveur
Pour obtenir les commandes du serveur :
php bin/console
Pour démarrer le serveur :
php bin/console server:start
Pour arrêter le serveur :
php bin/console server:stop
Pour voir les différentes routes de son projet :
php bin/console debug:router
Quelques points à savoir
Symfony c'est quoi ?
Symfony est un framework PHP développé en France et constitue l'une des technologies les plus utilisées en entreprise. Il s'agit d'un MVC (Method View Controller) qui va nous permettre de développer proprement et de manière sécurisée en orienté objet.
Les packages utiles à installer
Twig
Il est nécessaire d'installer un modèle de template tel que "Twig" (semblable à Blade) qui se présente sous la forme d'un fichier de type "NomDuFichier.html.twig", pour cela :
composer require twig
Un dossier
template
est alors crée ainsi qu'un fichierbase.html.twig
Doctrine
Il est nécessaire d'installer un ORM tel que "Doctrine" afin d'intéragir avec la base de données, pour cela :
composer require doctrine
Pour ajouter les annonations à doctrine :
composer require annotations
MakerBundle
Cette extension permet d'ajouter simplement des classes, contrôleurs et des commandes en ligne de commandes, pour cela :
composer require maker
Pour créer une classe :
php bin/console make:entity NomClasse
Pour créer un contrôleur :php bin/console make:controller NomContrôleur
Pour créer une commande :php bin/console make:command NomCommande
Autre
Pour ajouter un formulaire automatique à son projet :
composer require form
Pour ajouter var-dumper à son projet :composer require debug
Pour ajouter une interface administrateur à son projet :composer require admin
Pour sécuriser son projet (et ses utilisateurs) :composer require security
Pour afficher les messages d'erreurs sur son projet :composer require validator
Emplacements des fichiers principaux
Les contrôleurs
Il est nécessaire de créer un contrôleur pour chaque page de son site et EGALEMENT POUR LA PAGE D'INDEX qui n'est pas créée par défaut
Les contrôleurs se trouvent dans
src
->controller
Les fichiers Twig
Une fois le template installé, les fichiers Twig se situent dans le dossier
templates
crée par défaut à l'installation de ce dernier
Les classes
La création de classes tel qu'une classe Users ou Articles par exemple devra se faire dans :
src
->Entity
Création du premier contrôleur
Après avoir installé Twig et MakerBundle, créer le premier contrôleur avec pour nom DefaultController (nom par défaut dans
routes.yaml
:
php bin/console make:controller DefaultController
Ensuite, dans
DefaultController
, modifier l'annotation de la route de cette façon :
/**
* @Route("/", name="homepage")
*/
A la création du contrôleur, un dossier
default
est crée dans le dossiertemplates
avec un viewindex.html.twig
de la page d'accueil
Installation de la base de données
.env
Paramétrage du Pour paramétrer, le
.env
, il suffit de remplacer la ligne suivante par les informations souhaitées :
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name
Exemple, (ici, pour une base de données sans mot de passe) et avec une base de données qui a pour nom "MonProjetSymfony" :
DATABASE_URL=mysql://root:@127.0.0.1:3306/MonProjetSymfony
Création de la base de données (Via Doctrine) :
php bin/console doctrine:database:create
Mise à jour de la base de données (Via Doctrine) :
bin/console doctrine:schema:update --dump-sql --force
BONUS
Pour sécuriser les connexions utilisateurs en cache, utiliser la fonction serialize(...) sur les identifiants importants pour vérifier (seulement les paramètres qui ne changent jamais pour un utilisateur ex:id, email, username, etc) qu'ils correspondent bien à l'utilisateur connecté.
Exemple, à la fin de la classe User :
/**
* {@inheritdoc}
*/
public function serialize(): ?string
{
return serialize([
$this->id,
$this->username,
$this->email,
$this->password,
$this->active,
]);
}
/**
* {@inheritdoc}
*/
public function unserialize($serialized): void
{
list (
$this->id,
$this->username,
$this->email,
$this->password,
$this->active
) = unserialize($serialized);
}