• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 11/05/2020

Installation et organisation

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans ce chapitre nous allons faire connaissance avec le gestionnaire de dépendances Composer. Nous allons voir également comment créer une application Laravel. Nous verrons enfin comment le code est organisé dans cette application.

Pour utiliser Laravel et suivre ce chapitre et l'ensemble du cours vous aurez besoin d'un serveur équipé de PHP avec au minimum la version 5.5.9 et aussi de MySQL. Il existe plusieurs applications "tout-en-un" faciles à installer : wampserver, xampp, easyphp... Personnellement j'utilise wamp qui répond sans problème à toutes mes attentes et qui permet de basculer entre les versions de PHP et de MySQL en un simple clic.

Il existe aussi une solution toute prête, Homestead, facile à mettre en oeuvre sous Linux, mais beaucoup moins conviviale avec Windows. Pour ce dernier Il existe une autre possibilité bien pensée : Laragon.

Quelle que soit l'application que vous utilisez, vérifiez que vous avez la bonne version de PHP (minimum 5.5.9). D'autre part les extensions PDO, Tokenizer, OpenSSL et Mbstring de PHP doivent être activées.

Composer

Présentation

Je vous ai dit que Laravel utilise des composants d'autres sources. Plutôt que de les incorporer directement, il utilise un gestionnaire de dépendance : Composer. D'ailleurs pour le coup les composants de Laravel sont aussi traités comme des dépendances. Mais c'est quoi un gestionnaire de dépendance ?

Imaginez que vous créez une application PHP et que vous utilisez des composants issus de différentes sources : Carbon pour les dates, Redis pour les données... Vous pouvez utiliser la méthode laborieuse en allant chercher tout ça de façon manuelle, et vous allez être confronté à des difficultés :

  • télécharger tous les composants dont vous avez besoin et les placer dans votre structure de dossiers,

  • traquer les éventuels conflits de nommage entre les librairies,

  • mettre à jour manuellement les librairies quand c'est nécessaire,

  • prévoir le code pour charger les classes à utiliser...

Tout ça est évidemment faisable mais avouez que s'il était possible d'automatiser les procédures ce serait vraiment génial. C'est justement ce que fait un gestionnaire de dépendances !

Installation

Laravel utilise Composer comme gestionnaire de dépendances. Il vous faut donc commencer par l'installer sur votre ordinateur. Selon votre système la procédure est différente, je vous renvoie donc au site pour obtenir tous les renseignements sur le sujet. 

Pour l'installation dans Windows il suffit de télécharger un setup qui fait tout très proprement et renseigne aussi la variable d'environnement PATH, ce qui permet ensuite d'utiliser Composer à partir de n'importe quel emplacement. Par contre l'installateur vous demandera où se trouvephp.exe et vous devrez répondre. En effet Composer est un fichier PHP et a besoin d'être exécuté.

Pour les autres systèmes, en particulier Linux, le plus simple est d'utilisercurl. Il suffit de suivre les instructions détaillées sur le site.

Fonctionnement

Pour comprendre le fonctionnement de Composer, il faut connaître le formatJSON qui est l'acronyme de JavaScript Object Notation. Un fichierJSON a pour but de contenir des informations de type étiquette-valeur. Regardez cet exemple élémentaire :

{
  "nom": "Durand",
  "prénom": "Jean"
}

Les étiquettes sont "nom" et "prénom" et les valeurs correspondantes "Durand" et "Jean". Les valeurs peuvent être aussi des tableaux ou des objets. Regardez ce second exemple :

{
    "identité1" : {
	  "nom": "Durand",
	  "prénom": "Jean"
	},
	"identité2" : {
	  "nom": "Dupont",
	  "prénom": "Albert"
	}	
}

Composer a besoin d'un fichiercomposer.json associé. Ce fichier contient les instructions pour Composer : les dépendances, les classes à charger automatiquement... Voici un extrait de ce fichier pour Laravel :

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*"
    },
    ...
}

Créer une application Laravel

Prérequis

Composer fonctionne en ligne de commande. Vous avez donc besoin de la console (nommée Terminal ou Konsole sur OS X et Linux). Les utilisateurs de Linux sont très certainement habitués à l'utilisation de la console mais il en est généralement pas de même pour les adeptes de Windows. Pour trouver la console sur ce système il faut chercher l'invite de commande :

Trouver la console dans Windows
Trouver la console dans Windows

Installation avec Composer

Il y a plusieurs façons de créer une application Laravel. Celle qui me semble la plus simple consiste à utiliser la commandecreate-project de Composer. Par exemple je veux créer une application dans un dossierlaravel5 à la racine de mon serveur, voici la syntaxe à utiliser :

composer create-project --prefer-dist laravel/laravel laravel5

L'installation démarre et je n'ai plus qu'à attendre quelques minutes pour que Composer fasse son travail jusqu'au bout. Vous verrez s'afficher une liste de téléchargements. Au final on se retrouve avec cette architecture :

Architecture des dossiers de Laravel

On peux vérifier que tout fonctionne bien avec l'URL http://localhost/laravel5/public. Normalement on doit obtenir cette page très épurée :

Page d'accueil de Laravel

Pour les mises à jour ultérieures il suffit encore d'utiliser Composer avec la commande update :

composer update

Installation avec Laravel Installer

Une autre solution pour installer Laravel consiste à utiliser l'installeur. Il faut commencer par installer globalement l'installeur avec Composer :

composer global require "laravel/installer"

Il faut ensuite informer la variable d'environnementpath de l'emplacement du dossier.../composer/vendor/bin

Pour créer une application il suffit de taper :

laravel new monAppli

Laravel sera alors installé dans le dossiermonAppli.

Autorisations

Au niveau des dossiers de Laravel, le seul qui a besoin de droits d'écriture par le serveur eststorage .

Serveur

Pour fonctionner correctement, Laravel a besoin de PHP :

  • Version >= 5.5.9

  • Extension PDO

  • Extension Mbstring

  • Extension OpenSSL

  • Extension Tokenizer

Des URL propres

Pour un serveur Apache il est prévu dans le dossierpublic un fichier .htaccessavec ce code :

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Le but est essentiellement d'éviter d'avoir index.phpdans l'url. Mais pour que ça fonctionne il faut activer le modulemod_rewrite .

Organisation de Laravel

Maintenant qu'on a un Laravel tout neuf et qui fonctionne voyons un peu ce qu'il contient.

Dossier app

Ce dossier contient les éléments essentiels de l'application :

 

Dossier App
  • Console/Commands : toutes les commandes en mode console, il y a au départ une commandeInspire qui sert d'exemple,

  • Jobs : commandes concernant les tâches que doit effectuer l'application. C'est une nouveauté de la version 5 que je n'aborderai pas dans ce cours,

  • Events et Listeners : événements et écouteurs nécessaires pour l'application,

  • Http : tout ce qui concerne la communication : contrôleurs, routes, middlewares (il y a quater middlewares de base) et requêtes,

  • Providers : tous les fournisseurs de services (providers), il y en a déjà 4 au départ. Les providers servent à initialiser les composants.

  • Policies : une évolution récente qui permet de gérer facilement les droits d'accès.

On trouve également le fichier User.php qui est un modèle qui concerne les utilisateurs pour la base de données.

Évidemment tout cela doit vous paraître assez nébuleux pour le moment mais nous verrons en détail la plupart de ces sections au fil du cours.

Autres dossiers

Autres dossiers
Autres dossiers

Voici une description du contenu des autres dossiers :

  • bootstrap : scripts d'initialisation de Laravel pour le chargement automatique des classes, la fixation de l'environnement et des chemins, et pour le démarrage de l'application,

  • public : tout ce qui doit apparaître dans le dossier public du site : images, CSS, scripts...

  • vendor : tous les composants de Laravel et de ses dépendances,

  • config : toutes les configurations : application, authentification, cache, base de données, espaces de noms, emails, systèmes de fichier, session...

  • database : migrations et les populations,

  • resources : vues, fichiers de langage et assets (par exemple les fichiers LESS ou Sass),

  • storage : données temporaires de l'application : vues compilées, caches, clés de session...

  • tests : fichiers de tests unitaires.

Fichiers de la racine

Il y a un certain nombre de fichiers dans la racine dont voici les principaux :

  • artisan : outil en ligne de Laravel pour des tâches de gestion,

  • composer.json : fichier de référence de Composer,

  • phpunit.xml : fichier de configuration de phpunit (pour les tests unitaires),

  • .env : fichier pour spécifier l'environnement d'exécution.

Accessibilité

Pour des raisons de sécurité sur le serveur seul le dossierpublic doit être accessible :

Le dossier public est le seul accessible

Cette configuration n'est pas toujours possible sur un serveur mutualisé, il faut alors modifier un peu Laravel pour que ça fonctionne; j'en parlerai dans le chapitre sur le déploiement.

Environnement et messages d'erreur

Par défaut lorsque vous installez Laravel, celui-ci est en mode "debug". Au niveau de l'affichage des erreurs si vous entrez une URL qui n'est pas prévue vous allez obtenir quelque chose comme ceci :

Un message d'erreur en mode "debug"

Pendant la phase de développement on a besoin d'obtenir des messages explicites pour traquer les erreurs inévitables que nous allons faire. En mode "production" il faudra changer ce mode, pour cela ouvrez le fichierconfig/app.php et trouvez cette ligne :

'debug' => env('APP_DEBUG', false),

Autrement dit on va chercher la valeur dans l'environnement, mais où peut-on le trouver ? Regardez à la racine des dossiers, vous y trouvez un fichier.env :

Le fichier de l'environnement

Avec ce contenu :

APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:/qnv1yuwcCDFJuki91gc7LBtIzRkJgFxusIX2x1wwUM=
APP_URL=http://localhost

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
...

Vous remarquez que dans ce fichier la variableAPP_DEBUG a la valeurtrue. On va la conserver ainsi puisqu'on veut être en mode "debug". Vous êtes ainsi en mode débogage avec affichage de messages d'erreur détaillés. Si vous la mettez àfalse (ou si vous la supprimez), avec une URL non prévue vous obtenez maintenant juste :

Un message d'erreur en mode "production"

Il ne faudra évidemment pas laisser la valeurtrue lors d'une mise en production ! On reparlera de ça lorsqu'on verra la gestion de l'environnement. Vous ne risquerez ainsi plus d'oublier de changer cette valeur parce que Laravel saura si vous êtes sur votre serveur de développement ou sur celui de production.

Le composant Html

Dans la version 4 de Laravel il y avait directement le composantHtml qui permet de créer facilement des formulaires et qui offre un lot d'helpers pour l'écriture du HTML. Dans la version 5 ce composant n'est pas chargé par défaut. Comme nous en aurons besoin dans ce cours, une fois que vous avez réussi à installer une application toute neuve de Laravel vous allez‌ modifier ainsi le fichiercomposer.json :

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "laravelcollective/html": "5.2.*"
},

On demande ainsi à Composer de charger le composant laravelcollective/html. Lancez alors une mise à jour (attention de bien vous positionner dans le dossier racine de l'application)  :

composer update

Attendez la fin du chargement. Il faut ensuite modifier ainsi le fichierconfig/app.php :

<?php

    /*
     * Application Service Providers...
     */
    App\Providers\AppServiceProvider::class,
    App\Providers\AuthServiceProvider::class,
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,
    Collective\Html\HtmlServiceProvider::class,
    
    ...
    
    'View'  => Illuminate\Support\Facades\View::class,
    'Form'  => Collective\Html\FormFacade::class,
    'Html'  => Collective\Html\HtmlFacade::class,
    
    ...

Donc il faut ajouter cette ligne dans le tableau des providers :

<?php
Collective\Html\HtmlServiceProvider::class,

Il faut aussi  ajouter ces deux lignes dans le tableau des alias :

<?php
'Form'  => Collective\Html\FormFacade::class,
'Html'  => Collective\Html\HtmlFacade::class,

Ainsi vous allez disposer de ce composant bien utile !

En résumé

  • Pour son installation et sa mise à jour Laravel utilise le gestionnaire de dépendances Composer.

  • La création d'une application Laravel se fait à partir de la console avec une simple ligne de commande.

  • Laravel est organisé en plusieurs dossiers.

  • Le dossierpublic est le seul qui doit être accessible pour le client.

  • L'environnement est fixé à l'aide du fichier .env.

  • Le composantHtml n'est pas prévu par défaut, il faut le charger indépendamment. 

Exemple de certificat de réussite
Exemple de certificat de réussite