Laravel, Framework de PHP

Introduction :

 

Laravel est un Framework open source, de PHP, crée en juin 2011 par Monsieur Taylor Otwell. Il s’appuie sur le patron : « Modèle – Vue – Contrôleur » et est entièrement dirigé pour de la programmation orientée objet.

Comme tous les Frameworks PHP, Laravel permet d'écrire une application web plus rapidement et surtout plus proprement.

Il est devenu en 2016 le projet PHP le mieux noté de GitHub.

Laravel est un « bébé » de Symphony, il s’inspire de son système de routage, et offre de nombreuses fonctionnalités.

Voici une liste non exhaustive de ses dernières :

  • Un système d’envoi de mail,
  • Un système de routage performant,
  • Un moteur de template efficace,
  • Un constructeur de formulaire très pratique,
  • Un système d’authentification pour les connexions,
  • Un créateur de requêtes SQL et un ORM performants (éloquent),
  • Un système de migration pour les bases de données
  • Un système de cache
  • Une gestion des sessions
  • etc

 

De plus Laravel dispose d’une très bonne documentation et d’une communauté active, ce qui rentre évidement en compte lors du choix d’un Framework !

Lexique :

 

Voici un petit lexique des mots qui sont utilisé dans Laravel, ce qui peux être utile pour bien comprendre le reste de cet article.

 

Route : Les routes sont un moyen de créer une URL de requête de votre application. La meilleure chose à propos de ces URL est qu'elles sont à la fois lisibles par l'homme et utile pour le référencement. s  Facade : Les façades fournissent une interface « statique » aux classes disponibles de l’application, dans le but de simplifier la syntaxe.

 

View : Les views sont le visuel de nos pages web, Laravel utilise MVC !

 

Blade : Blade est un moteur de template de Laravel, il permet notamment de simplifier la syntaxe de PHP.

 

Controller : La tâche d'un contrôleur est de réceptionner une requête (qui a déjà été triée par une route) et de définir la réponse appropriée.

 

Middleware : C’est un code qui est activé à l'arrivée de la requête (ou à son départ) pour effectuer un traitement.

 

Migrations : Une migration permet de créer et de mettre à jour un schéma de base de données.

 

Artisan : outil en ligne de commande.

 

Eloquent : un ORM (acronyme de object-relational mapping. Tous les éléments d’une base de données ont une représentation sous forme d’objet.

 

Ressource : les ressources permettent de créer des routes « CRUD » (Create, Read, Update, Delete).

 

 

Installation Laravel 5.7 :

            Prérequis

  • PHP >= 7.1.3
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension
  • Ctype PHP Extension
  • JSON PHP Extension

 

Composer :

Composer est un gestionnaire de dépendance, grâce à lui, plus besoin de télécharger tous les composants un à un, les mettre à jour, traiter les conflits de nommage entre les librairies, etc… composer est là pour vous !

Pour le télécharger rendez- vous sur le site : https://getcomposer.org/

Installation via Composer :

 

Il n’est pas obligatoire d’utiliser Composer pour utiliser Laravel, mais c’est bien plus pratique au vu des points figurés ci-dessus.

Pour cela il suffit de taper, dans votre terminal cette commande :

  composer global require laravel/installer   

 

Attention ! Il faut informer la variable d’environnement ($PATH) de l’emplacement de « l’installer » !

 

Vous pouvez vous servir aussi directement de la commande de Composer :

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

 

         Création d’un nouveau projet :  

La création d’un nouveau projet se fait très facilement, taper cela dans votre terminal :   laravel new monProjet Organisation des fichiers :

 

 

 

 

Ceci est un exemple de l’arborescence sous Laravel 5.7

Les dossiers les plus couramment utilisés sont :

http : vous y trouverez les controllers et les middleware

database : ce qui est en rapport avec votre base de  données

config : comme son nom l’indique, les fichiers de configuration seront dans ce dossier

ressource : les views

public : ici sera placé le CSS / JS de votre application

routes : pour une appli web, vos routes seront dans le fichier : web.php

 

 

 

 

 

 

 

Ceci est un extrait de « .env.example »

Autre fichier important : le  « .env », que vous créez en installant Composer, ce fichier vous permets de configurer votre environnement, Laravel vous fournit un exemple dans le fichier « .env.example »

 

Vous pouvez voir des variables d’environnement qui seront chargé dans votre code, vous pouvez y définir notamment la connexion a votre base de données. ( Dans VOTRE .env !)

 

 

Exemples d’utilisation :

 

Pour un projet personnel, j’avais créé une application Web en Laravel, avec un de mes collègue. Je vais vous exposer ci-dessous quelques fonctionnalités de Laravel.

 

Les migrations :

 

A gauche, c’est un extrait de l’architecture du dossier migrations, dans ce dossier se trouvent tous les fichiers qui sont créés à partir de la commande :  « php artisan make:migration create_Category_Video_table » dans le terminal. Cette dernière sert à créer directement les tables dans la base de données. Ce qui donne un résultat comme cela dans le dossier :

 

 

 

Grâce à la commande ci-dessus nous avons le squelette de cette table.

On peut préciser le type de clés que l’on désire( ici foreign) et l’on pointe vers l’autre table souhaité. On a la possibilité aussi de choisir le type d’entrée dans la base de données, (unsignedInteger).

Après modification, nous pouvons faire : « php artisan migrate », ce qui mettra à jour la base de données.

C’est un gain de temps, clair et efficace !

 

Les routes

En Laravel, le système de vue est géré par des routes (redirection), dans l’exemple ci-dessus vous pouvez voir qu’il y a plusieurs possibilités, ici « GET », « POST » et « PATCH ».

Je vais résumer ces méthodes :

GET :

- Les requêtes GET sont uniquement utilisées pour demander des données (pas pour les modifier) et elles passent par l’URL

POST :

-Utilisé pour envoyer des données à un serveur afin de créer ou de mettre à jour une ressource. POST est plus sécurisé pour les données sensibles.

PATCH :

-Utilisé pour modifier des données. (Ajouté en 2010)

 

En ce qui concerne mes routes, elles se trouvent dans le ficher « routes/web.php », elles vont rediriger les utilisateurs en fonction de leurs cliques sur la page.

Exemple : L’utilisateur arrive sur la page d’accueil : « / » : c’est la route : « Route::get('/', 'HomeController@index')->name('accueil'); » qui sera appelé. Traduction : depuis l’URL « / » on va chercher dans le controller qui se nomme « HomeController » à la fonction index. En l’occurrence ici ça nous affiche la vue .

En utilisant la fonction « index() » qui se trouve dans VideoController (videoctrl a été défini plutôt dans le constructeur comme étant de type VideoController).

Dans cette fonction index(), on valorise $videos avec une requête qui va chercher dans ma base de données, les vidéos qui sont validées (1) qui ont une catégorie, et qui vont être rangées par leurs dates de création et leurs descriptions. Puis seulement trois vidéos seront affichées grâce au « paginate(3) », fonction bien pratique de Laravel !

Cela ressemble beaucoup à une requête SQL.

 

CRUD : (Create / Read / Update / Delete)

 

Pour crée le fameux CRUD, il faut créer un controller, qui va pourvoir gérer toute nos fonctions. Pour cela il faut taper la commande : « php artisan controller:make VideoController », ce qui va donner un squelette avec les fonctions :  « show » « create »  « edit »  « update »  «store»  « destroy ». Ici un exemple avec update, pour les vidéos.

On va chercher dans la table `Video` l’id de la vidéo qu’on désire, on stocke ça dans $data, puis on va cibler avec le $request la colonne `validated`. Si c’est égal à un la vidéo est validée, et on affiche un message adapté, sinon on retire la vidéo. Le « return back » renvoie sur la page précédente.

Ceci est un exemple dans la base de données, où l’on peut voir que la vidéo est validée (validated== 1).

Ici c’est un exemple du front du crud pour modifier ou ajouter des catégories. (Pas fini !)

 

Responsive :

 

« Un site web adaptatif (anglais RWD pour responsive web design, conception de sites web adaptatifs selon l'OQLF) est un site web dont la conception vise, grâce à différents principes et techniques, à offrir une consultation confortable même pour des supports différents. »

Dans cette application sous Laravel, Bootstrap 4 est intégré de base dans le framework. Nous nous sommes donc servis de celui-ci pour le coté responsive.

J’ai choisi comme exemple les cards de nos vidéos, nous y avons ajouté la classe : « embed-responsive » qui fait que le vidéo, s’adaptera à la taille de son parent, ce qui va permettre un affichage propre sur tous les périphériques.

Nous avons aussi choisi de faire un menu « hamburger » lors de la visualisation de notre site sur écrans réduits. Ce qui permet d’avoir une visualisation du menu sur le clique de celui-ci. Comme cela pas de surcharge de scroll, ni de surplus visuel inutile.

La class navbar-toggler , sert pour le basculement du menu, et est à utiliser avec le data-toggle « collapse ». Lors du rétrécissement de la fenêtre, ou si elle est déjà réduite nous auront notre menu hamburger qui apparaitra !

 

Avant :

 

Après :

Filtre de recherche :

 

Voici comment j’ai créé un filtre de recherche. Les utilisateurs devaient pouvoir rechercher leurs vidéos en fonction de la durée et de la catégorie de leur choix !

Dans cette fonction nous pouvons voir que je devais transformer la date pour l’adapter au format H :i :s.

Donc $video est valorisé grâce à la requête qui va chercher dans la table Video qui a comme catégorie la category_id de la requête (choisi par l’utilisateur) et qui a la durée choisie !

Puis l’on renvoie les vidéos adéquats !

Mon formulaire qui va taper dans la route « search ».

Qui retourne la view searchForm.

Voici le resultat du front

 

Autres fonctionnalités :

L’envoi de mail :

  • Laravel permet l’envoi simple d’email.
  • Il faut configurer correctement les paramètres pour l’envoi des emails.
  • Pour chaque email il faut créer une classe « mailable».
  • On peut passer des informations à l’email en créant une propriété publique dans la classe « mailable ».
  • On peut passer en mode Log en phase de développement ou alors utiliser MailTrap.

L’authentification :

  • L’authentification est totalement et simplement prise en charge par Laravel.
  • Les migrations pour l’authentification sont déjà dans l’installation de base de Laravel.
  • La commande d’Artisan make:auth génère les contrôleurs, les routes et les vues pour l’authentification.
  • Les middlewares auth et guest permettent d’interdire les accès aux routes qui concernent uniquement les utilisateurs authentifiés ou non authentifiés.
  • On peut ajouter la confirmation de l’email avec un package dédié
  • On peut permettre la connexion indifféremment avec l’email ou le nom d’utilisateur

Le cache :

  • Laravel est équipé d’un système de gestion de fichiers unifié qui permet des manipulations en local ou sur le cloud
  • Laravel est équipé d’un système de cache unifié
  • Laravel autorise la mise en cache des routes

La gestion de sessions :

  • Les fichiers de configuration permettent de mémoriser facilement des ensembles clé-valeur et sont gérés par l’helper config.
  • Les sessions permettent de mémoriser des informations concernant un client et sont facilement manipulables avec l’helper session.
  • Laravel comporte un système complet de gestion de fichiers en local, à distance ou sur le cloud avec une API commune.
    Il est facile de créer un système de téléchargement de fichier.

Avec Blade on peut :

  • Utiliser l’héritage de vue,
  • Inclure une vue,
  • Utiliser un composant,
  • Utiliser de nombreuses directives pour organiser le code,
  • Utiliser des boucles,
  • Injecter un service.

 

 Sources :

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *