Skip to content

Instantly share code, notes, and snippets.

@aliastim
Last active November 21, 2018 15:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aliastim/77aa7e1d07f33b2d22e63675dc28f05c to your computer and use it in GitHub Desktop.
Save aliastim/77aa7e1d07f33b2d22e63675dc28f05c to your computer and use it in GitHub Desktop.

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 :
Dans menu PhpStorm -> Preferences -> plugins -> Browse repositories et installer "symphony plugin"
Puis dans Languages & 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 fichier base.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 dossier templates avec un view index.html.twig de la page d'accueil

Installation de la base de données

Paramétrage du .env

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);
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment