Laravel, présentation du framework web PHP
Laravel, un framework de développement PHP réputé, est bien plus qu'un simple outil pour les développeurs web. Offrant une structure de code soignée, des modèles bien définis tels que le modèle MVC et une gamme de fonctionnalités puissantes, Laravel brille par sa flexibilité, s'adaptant aussi bien aux projets modestes qu'aux entreprises de grande envergure.
Laravel c’est quoi ?
En bref, le Framework PHP Laravel est un environnement de développement offrant un ensemble d’outils, pour les artisans du web, fait pour les développeurs. Vous me direz des framework PHP il en existe beaucoup, en quoi Laravel est-il mieux ? La puissance de Laravel réside notamment dans la lisibilité du code, le code est bien structuré et une classe PHP dépasse rarement les 500 lignes. Le framework utilise le modèle MVC (model, view, controller) comme base et repose sur bien d’autres patterns d’implémentation, comme le pattern Provider ou le pattern Repository.
Grâce à ces modèles bien définis, Laravel s'adapte tout aussi bien aux gros projets qu'aux petits. Il existe également de nombreuses fonctions helpers qui sont très utiles.
Pourquoi utiliser Laravel pour vos projets web ?
Laravel est un framework web PHP puissant et facile à utiliser qui offre une variété de fonctionnalités intégrées pour la création de sites et applications web. Voici une liste des principaux avantages qui font de Laravel un choix pertinent pour vos projets :
- Les commandes artisans, un outil de ligne de commande pour générer des migrations, des modèles, des contrôleurs, et encore plein d’autres. On peut également créer ses propres commandes.
- Le routage, toutes les routes sont dans routes/web.php. La plupart du temps, on va écrire des routes qui pointent sur une action d’un contrôleur.
//routes/web.php
Route::get( ’user/profile’, [UserProfileController::class, ’show’])->name(’profile’);
// Generating URLs ...
$url = route(’profile’);
// Generating Redirects ...
return redirect()->route(’profile’);
- Les injections de dépendances, comme son nom l’indique nous permettent de directement injecter des dépendances. Par exemple si nous avons un BookRepository que nous souhaitons utiliser dans notre contrôleur on peut l’injecter directement dans le constructeur et il sera résolu par le service provider de Laravel au moment de l’exécution.
class BookController extends Controller
{
private $repository;
public function __construct(BookRepository $repository)
{
$this->repository = $repository;
}
...
}
- Les Middleware, mécanisme pour filtrer les requêtes entrantes et donner du contexte aux requêtes entrantes, comme l’utilisateur authentifié par exemple.
- Les bases de données, il existe les migrations pour créer nos tables, les seeders pour insérer des données et le query builder pour écrire nos requêtes de base données.
//easily build queries
$user = DB::table(’users’)->where(’name’, ’John’)->first();
//paginate
DB::table(’users’)->paginate(15);
- Les modèles, permettent de définir toutes nos relations et gérer les attributs (ou en ajouter) avec un système de mutateurs (méthode pour modifier et contrôler une valeur) avec des getters et setters . Retourne un objet ou une collection Eloquent.
- Les collections Eloquent avec sa panoplie de fonctions de manipulation de tableau.
$collection = collect([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
//chain different methods
$sequence = $collection
->chunk(2)
->mapSpread(function (int $even, int $odd) {
return $even + $odd;
})
->all();
// [1, 5, 9, 13, 17]
- Les Queues, files d’attente pour traiter les tâches plus lentes en arrière-plan. Par exemple l’envoi d’un mail peut prendre du temps, on peut le mettre dans la file d’attente en tant que job et il sera exécuté en arrière-plan par le serveur sans bloquer l’utilisateur sur une requête trop longue.
- Les vues avec le système de template Blade pour générer les pages HTML. Il est également possible de facilement intégrer des framework JS comme VueJs et construire des SPA (single page app). Un système de traductions existe également pour facilement créer des pages dans différentes langues.
Laravel intègre également des systèmes de Broadcasting, cache, session, authentification.
Et si les fonctionnalités de base ne vous suffisent pas, il existe un nombre grandissant de packages officiels. Par exemple, Horizon, un gestionnaire de file d’attente qui offre un dashboard pour gérer toutes les tâches dans la file. Différents systèmes d’authentifications : Sanctum, système d’authentification pour les apis, Socialite pour l’authentification OAuth, Breeze, authentification basique ou encore Jetstream pour avoir un système plus complet avec mot de passe oublié, gestion d’équipes, etc. Des environnements de développement différents avec Sail (images docker), Homestead (machine virtuelle) ou Valet (serveur nginx installé localement).
Points forts de Laravel
On trouvera toujours une solution élégante d’écrire notre code avec Laravel. Et si on est bloqué, la communauté est énorme et toujours prête à aider. Souvent je trouve même la solution par moi-même en parcourant le code source de Laravel, qui est très bien écrit et bien documenté. Son créateur, Taylor Otwell à vraiment le sens du détail, rien n’est laissé au hasard. D’ailleurs, si vous regardez bien, tous les commentaires dans le code source de Laravel sont formatés de la même manière et toujours sur 3 lignes.
Un point fort de Laravel est la facilité et la rapidité de création de sites web. Grâce à la grande variété de fonctionnalités intégrées, on peut créer rapidement et efficacement des sites web complexes et sophistiqués. De plus, on peut étendre facilement les fonctionnalités intégrées de Laravel pour répondre aux besoins spécifiques de notre application.
Laravel est également connu pour sa sécurité. Le framework offre une variété de mécanismes de sécurité tels que la protection contre les injections SQL et les attaques XSS (Cross-site scripting).
Points faibles de Laravel
Si vous voulez faire du websocket performant, Laravel n’est peut-être pas votre meilleur allié, en effet Laravel ne pourra pas recevoir de message websocket, vous devrez faire un appel API qui ensuite pourra broadcaster sur le websocket. Et à chaque appel API, il faut instancier Laravel, ce qui prend un peu de temps. Contrairement à un serveur websocket implémenté en JavaScript, qui pourra directement traiter les messages entrants.
Le bootstrap, à chaque requête, Laravel est amorcé, ce qui peut avoir un impacte sur les performances. Il existe de bonnes pratiques pour réduire ce temps d’amorçage. En production il ne faut pas laisser le debug (APP_DEBUG=true), de plus notre application est exposée à des risques de sécurité. Mettre la config, les routes, et les vues en cache est également une bonne pratique à ne pas négliger.
Le mot de la fin
En conclusion, Laravel est un framework solide grâce à sa grande variété de fonctionnalités intégrées, à sa large communauté active et à sa sécurité. Il permet d’écrire du code élégant et facile à maintenir autant pour des petits que des grands projets. Une très bonne stack pour commencer un projet est Tall (TailwindCSS, AlpinJS, Laravel et Livewire) avec TailwindCSS un framework CSS que nous apprécions beaucoup chez Atipik, AlpineJs un framework JavaScript léger, Laravel que nous avons présenté ici et Livewire pour construire des interfaces dynamiques. Nous aurons l’occasion de présenter ces différents outils dans de prochains articles sur notre blog.