Laravel : introduction

laravel.pngNé en 2011, Laravel est le framework PHP à architecture MVCR dont on parle probablement le plus après Symfony depuis quelques années. Je suis partie à la rencontre de cet outil, et pour ne rien perdre des connaissances que j'en ai engrangées, je délivre dans le même temps ce mémo.


Installer Laravel

  • Installer Composer.composer.png
  • Installer Laravel : depuis l’invite de commandes, accéder au dossier www/htdocs de votre wamp/xampp et exécuter la commande suivante :
    composer create-project laravel/laravel {directory} "~5.0.0" --prefer-dist
  • Établir la connexion à la base de données : adapter les paramètres sous le fichier .env à la racine du dossier.

Préambule

Arborescence du framework

  • app (cœur de votre application)
    • Commands
    • Console
    • Events
    • Handlers
    • Commands
    • Events
    • Http
      • Controllers
      • Middleware
      • Requests
    • Providers
    • Services
  • bootstrap (fichiers d’initialisation de Laravel)
  • config (fichiers de configuration)
  • database (fichiers liés à la base de données)
    • migrations
    • seeds
  • public (assets : fichiers images, js, css)
    • package
  • resources (vues et fichiers de langue)
    • lang
    • views
  • storage (données temporaires de l’application : clés de session, caches…)
    • cache
    • logs
    • meta
    • sessions
    • views
    • work
  • tests (fichiers de tests unitaires)
  • vendor (composants de Laravel & dépendances)

Routes

Laravel impose l'utilisation de routes pour faire le pont entre ses vues et ses contrôleurs. S'il s'agit d'une caractéristique plutôt rébarbative au premier abord ((Face à des frameworks comme CodeIgniter, CakePHP ou Nette qui gèrent les routes automatiquement, Laravel force à se concentrer sur une composante de plus.)), on lui reconnaît les qualités de renforcer la sécurité et surtout d'améliorer la vitesse d'affichage, et donc l'expérience utilisateur. Présent dans le dossier app > Http, le fichier routes.php indique l'action à accomplir en fonction de l'URL saisie dans le navigateur. En fonction de l'URL explorée, les routes transmettent des données à la méthode d'un contrôleur, qui se charge d'exécuter une série d'instructions – en passant si nécessaire par le modèle, destiné à l'élaboration de requêtes dans la base de données – pour renvoyer enfin le résultat à la vue.

mcvr-1.png

Artisan

Laravel propose une interface en ligne de commande nommée Artisan. Artisan permet d'automatiser toute une série d'opérations de gestion au sein du framework, telles que la création de contrôleurs, de modèles, de migrations, ou l'affichage des routes existantes établies au sein de l'application créée.

Blade

Blade est le moteur de templates dépendant de Laravel. Il fonctionne sur un système d'héritage qui lui permet d'agréger des vues, et de faciliter par ailleurs l'affichage de variables (code PHP) en échappant la plupart des données qui sont embarquées dans les vues.

Eloquent

Eloquent est un ORM (Object-relational Mapping) implémentant ActiveRecord qui permet de faciliter les requêtes dans la base de données par une syntaxe voulue plus éloquente que du simple SQL. Il supporte nativement plusieurs SGBD : MySQL, PostgreSQL, Sqlite3 et SQLServer. Eloquent est typiquement utilisé dans les modèles, situés dans le dossier app > Http. Depuis Laravel 4, il n'est toutefois plus obligatoire pour gérer les requêtes au sein du framework. Il peut être par ailleurs remplacé par d'autres ORM qui correspondraient mieux aux attentes du développeur.

Conventions de nommage

  • Les tables des bases de données doivent figurer au pluriel.
  • Les colonnes de la base de données doivent normalement figurer en snake_case.
  • Les noms de classes doivent être déclarées UpperCamelCase.
  • Le nom des méthodes et des fonctions est prévu en lowerCamelCase.
  • Les constantes sont toutes déclarées en UPPERCASE_AVEC_UNDERSCORES.
  • Le nom des modèles, rappelant celui des tables doit figurer au singulier.
  • Les contrôleurs n'imposent rien quant au genre (singulier ou pluriel).

Précautions

Contrairement à d'autres frameworks, Laravel propose une upgrade (et non une update !) à chaque sous version, et ce, de manière extrêmement rapide ((Laravel a proposé sa version 5.0 en février 2015, sa version 5.1 en juin 2015 et sa version 5.2 en décembre 2015 !)). En procédant à l'upgrade d'un projet sur lequel vous avez déjà bien avancé, vous risqueriez de ne plus pouvoir exécuter celui-ci comme avant en raison des changements opérés au sein du noyau même de l'outil en passant, par exemple, de la version 5.1 à la version 5.2 du framework. Je vous recommande donc de conserver la version avec laquelle vous avez entamé votre site/application. Toutefois, pas de panique : les différentes versions du framework sont supposées être maintenues assez durablement, et leurs documentations rester disponibles tant que les versions précédentes "vivront".

laravel-releases.png

Dans l'article suivant, nous nous pencherons sur une utilisation basique du framework – sans base de données – pour appréhender les interactions entre les routes, les contrôleurs et les vues Blade. Enregistrer