34
Symfony 5 : introduction Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en Programmation par contrainte (IA) Ing ´ enieur en G ´ enie logiciel [email protected] H & H: Research and Training 1 / 24

Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

  • Upload
    others

  • View
    81

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : introduction

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en Programmation par contrainte (IA)

Ingenieur en Genie logiciel

[email protected]

H & H: Research and Training 1 / 24

Page 2: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Plan

1 Introduction

2 Installation

3 Symfony 5 : structure et fonctionnement

4 Symfony 5 : quelques outils

H & H: Research and Training 2 / 24

Page 3: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Introduction

Symfony

Symfony

framework PHP sorti en octobre 2005

francais

concu et developpe par SensioLabs

open-source

base sur l’architecture MVC

utilisant le protocole HTTP

H & H: Research and Training 3 / 24

Page 4: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Introduction

Symfony

Framework?

En francais : cadre de travail

Ensemble de composants logiciels et API facilitant ledeveloppement d’applications : pour les developpeurs maitrisantcertains concepts informatiques (POO, SQL, MVC...)

Ne pas confondre framework et CMS

IDE (en anglais Integrated Development Environment,Environnement de developpement integre)

CMS (en anglais Content Management System, Systeme degestion de contenu) pour les developpeurs novices

H & H: Research and Training 4 / 24

Page 5: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Introduction

Symfony

Framework?

En francais : cadre de travail

Ensemble de composants logiciels et API facilitant ledeveloppement d’applications : pour les developpeurs maitrisantcertains concepts informatiques (POO, SQL, MVC...)

Ne pas confondre framework et CMS

IDE (en anglais Integrated Development Environment,Environnement de developpement integre)

CMS (en anglais Content Management System, Systeme degestion de contenu) pour les developpeurs novices

H & H: Research and Training 4 / 24

Page 6: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Introduction

Symfony

Pourquoi utiliser un framework? (Ce n’est pas obligatoire)

Un code de qualite

Une meilleure structuration de notre projet

Conflits entre dependances geres par le framework

Plusieurs composants et API mis a disposition de developpeurs

H & H: Research and Training 5 / 24

Page 7: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Introduction

Symfony

Exemple d’utilisation de Symfony

Dailymotion (depuis 2009)

Composer

OpenClassroom

SNCF

...

H & H: Research and Training 6 / 24

Page 8: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Introduction

Symfony

Les differentes versions de Symfony

Symfony 1 : sorti en octobre 2005

Symfony 2 : sorti en aout 2011

Symfony 3 : sorti en novembre 2015

Symfony 4 : sorti en novembre 2017

Symfony 5 : sorti en novembre 2019

H & H: Research and Training 7 / 24

Page 9: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Installation sous Windows (avec un installer)

Telechargez https://get.symfony.com/cli/setup.exe puis installez

Installation sous Linux (avec une commande)

wget https://get.symfony.com/cli/installer -O - | bash

Installation sous Mac (avec une commande)

curl -sS https://get.symfony.com/cli/installer | bash

H & H: Research and Training 8 / 24

Page 10: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Installation sous Windows (avec un installer)

Telechargez https://get.symfony.com/cli/setup.exe puis installez

Installation sous Linux (avec une commande)

wget https://get.symfony.com/cli/installer -O - | bash

Installation sous Mac (avec une commande)

curl -sS https://get.symfony.com/cli/installer | bash

H & H: Research and Training 8 / 24

Page 11: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Installation sous Windows (avec un installer)

Telechargez https://get.symfony.com/cli/setup.exe puis installez

Installation sous Linux (avec une commande)

wget https://get.symfony.com/cli/installer -O - | bash

Installation sous Mac (avec une commande)

curl -sS https://get.symfony.com/cli/installer | bash

H & H: Research and Training 8 / 24

Page 12: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Pour creer un projet Web Symfony 5

Executez symfony new --full premier projet symfony

Pour creer un projet console ou microservice Symfony 5

Executez symfony new premier projet symfony

Pour lancer un projet Symfony 5 cree avec la commande symfony, executez

cd --full premier projet symfony

symfony server:start ou symfony serve

H & H: Research and Training 9 / 24

Page 13: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Pour creer un projet Web Symfony 5

Executez symfony new --full premier projet symfony

Pour creer un projet console ou microservice Symfony 5

Executez symfony new premier projet symfony

Pour lancer un projet Symfony 5 cree avec la commande symfony, executez

cd --full premier projet symfony

symfony server:start ou symfony serve

H & H: Research and Training 9 / 24

Page 14: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Pour creer un projet Web Symfony 5

Executez symfony new --full premier projet symfony

Pour creer un projet console ou microservice Symfony 5

Executez symfony new premier projet symfony

Pour lancer un projet Symfony 5 cree avec la commande symfony, executez

cd --full premier projet symfony

symfony server:start ou symfony serve

H & H: Research and Training 9 / 24

Page 15: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Pour creer un projet Web Symfony d’une version anterieure

Executez symfony new --full premier projet symfony--version=4.4

H & H: Research and Training 10 / 24

Page 16: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Pour configurer un projet Symfony existant (sur GitHub parexemple)

# cloner un projet existantgit clone lien_vers_repository_github

# se positionner dans le projetcd my-project/

# installer les dependances composer dans vendorcomposer install

H & H: Research and Training 11 / 24

Page 17: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Installation

Symfony

Sous Visual Studio Code

Installer l’extension PHP Namespace Resolver

Elle permet d’importer les namespaces necessaires pourcertaines classes

Pour l’utiliser, faites clic droit sur la classe concernee

Allez dans Import Class et choisir le namespacecorrespondant

H & H: Research and Training 12 / 24

Page 18: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

SymfonyStructure d’un projet Symfony 4/5

bin/ : contenant deux executables, la console de Symfony et phpunit

config/ : contenant les fichiers de configuration (routes, ORM...)

public/ : seul dossier accessible de l’exterieur (contenant le controleur frontalindex.php)

src/ : contenant les fichiers sources de l’application (controleurs, entites, formulaires,DAO...)

templates/ : contenant les vues (vue partielle) de l’application

tests/ : contenant les fichiers permettant de tester l’application

translations/ : contenant les fichiers de l’internationalisation

var/ : utilise par Symfony pendant l’execution, contenant les donnees de cache, le log etles sessions

vendor/ : contenant les fichiers necessaires pour une application Symfony (mentionnesdans composer.json)

H & H: Research and Training 13 / 24

Page 19: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

Symfony

Kernel?

noyau de Symfony

defini dans vendor/symfony/http-kernel

utilise par le controleur frontal pour designer le controleur adequatpour repondre a la requete HTTP recue

Controleur frontal

point d’entree d’une application Symfony

defini dans public/index.php

H & H: Research and Training 14 / 24

Page 20: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

Symfony

Kernel?

noyau de Symfony

defini dans vendor/symfony/http-kernel

utilise par le controleur frontal pour designer le controleur adequatpour repondre a la requete HTTP recue

Controleur frontal

point d’entree d’une application Symfony

defini dans public/index.php

H & H: Research and Training 14 / 24

Page 21: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

Symfony

Deux environnements de travail

prod (destine aux utilisateurs finaux de l’application)

montrant l’application telle qu’elle sera visible par les visiteurs

rapide a executer

n’affichant pas les messages d’erreur.

dev (destines aux developpeurs)

Plus lent que la version de production

Environnement de debogage complet

Possibilite d’ajouter des nouvelles fonctionnalites

H & H: Research and Training 15 / 24

Page 22: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

Symfony

Remarque

Par defaut, une application est configuree a l’environnement dev

Pour changer d’environnement, allez dans .env et mettez lavaleur de APP ENV a prod

H & H: Research and Training 16 / 24

Page 23: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

SymfonyExtrait d’index.php

$kernel = new Kernel($_SERVER[’APP_ENV’], (bool) $_SERVER[’APP_DEBUG’]);

$request = Request::createFromGlobals();$response = $kernel->handle($request);$response->send();$kernel->terminate($request, $response);

Explication

Le controleur frontal charge le kernel selon l’environnement precise dans.env

Il recupere la requete

Il utilise le kernel pour retourner une reponse

H & H: Research and Training 17 / 24

Page 24: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

SymfonyExtrait d’index.php

$kernel = new Kernel($_SERVER[’APP_ENV’], (bool) $_SERVER[’APP_DEBUG’]);

$request = Request::createFromGlobals();$response = $kernel->handle($request);$response->send();$kernel->terminate($request, $response);

Explication

Le controleur frontal charge le kernel selon l’environnement precise dans.env

Il recupere la requete

Il utilise le kernel pour retourner une reponse

H & H: Research and Training 17 / 24

Page 25: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

Symfony

Adresse 1

Adresse 2

.

.

.

Adresse n

Controleur frontal Kernel

Routeur

Controleur 1

Controleur 2

.

.

.

Controleur n

Modele Vue

Page HTMLInterceptionde requete

Recherchecontroleur

adequat

Execution

Demandede donnees

Constructionpage HTML

H & H: Research and Training 18 / 24

Page 26: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : structure et fonctionnement

SymfonyDeroulement

L’utilisateur saisit l’adresse d’une page de notre site

Le controleur frontal intercepte la requete et il la transmet au Kernel

Le Kernel demande au Routeur le controleur adequat a la pagedemandee

A la reception d’une reponse, le Kernel execute le controleur

Le controleur communique avec le modele pour recuperer ou stockercertaines donnees

Ensuite il renvoie ces donnees a la vue pour qu’elle construise la pageHTML et la lui retourne.

Enfin le controleur envoie a l’utilisateur la reponse (page HTML).

H & H: Research and Training 19 / 24

Page 27: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

Symfony

Quelques outils Symfony 5

Console

Flex

H & H: Research and Training 20 / 24

Page 28: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

Symfony

Console

Outil (composant) pour developpeur

Disponible depuis le lancement de Symfony

Permettant d’interagir avec l’application Symfony en ligne decommandes (CLI ou Command Line Interface).

Defini dans le repertoire bin par le fichier console

Pour consulter la liste des commandes disponibles

php bin/console

H & H: Research and Training 21 / 24

Page 29: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

Symfony

Console

Outil (composant) pour developpeur

Disponible depuis le lancement de Symfony

Permettant d’interagir avec l’application Symfony en ligne decommandes (CLI ou Command Line Interface).

Defini dans le repertoire bin par le fichier console

Pour consulter la liste des commandes disponibles

php bin/console

H & H: Research and Training 21 / 24

Page 30: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

Symfony

La console, pourquoi ?

Pour :

faciliter la creation/generation de controleurs, entites, formulaires,bundles...

eviter les erreurs

accelerer le developpement

H & H: Research and Training 22 / 24

Page 31: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

Symfony

Pour consulter la liste des elements que l’on puisse generer avec laconsole

php bin/console list make

H & H: Research and Training 23 / 24

Page 32: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

SymfonyFlex

Outil pour developpeur

Disponible depuis la version 4 de Symfony

Execute lorsque Composer est utilise pour installer une nouvelle dependance (recette ourecipes en anglais) afin de la configurer

recipe = bibliotheque standard (definie dans packagist : depot de Composer) + configuration

Pour consulter la liste des recettes

https://flex.symfony.com/

H & H: Research and Training 24 / 24

Page 33: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

SymfonyFlex

Outil pour developpeur

Disponible depuis la version 4 de Symfony

Execute lorsque Composer est utilise pour installer une nouvelle dependance (recette ourecipes en anglais) afin de la configurer

recipe = bibliotheque standard (definie dans packagist : depot de Composer) + configuration

Pour consulter la liste des recettes

https://flex.symfony.com/

H & H: Research and Training 24 / 24

Page 34: Symfony 5 : introduction · 2020-05-11 · Introduction Symfony Symfony framework PHP sorti en octobre 2005 franc¸ais conc¸u et developp´ e par SensioLabs´ open-source base sur

Symfony 5 : quelques outils

SymfonyFlex

Outil pour developpeur

Disponible depuis la version 4 de Symfony

Execute lorsque Composer est utilise pour installer une nouvelle dependance (recette ourecipes en anglais) afin de la configurer

recipe = bibliotheque standard (definie dans packagist : depot de Composer) + configuration

Pour consulter la liste des recettes

https://flex.symfony.com/

H & H: Research and Training 24 / 24