Laravel
Laravel est un framework pour le développement web. Il est adapté pour les petites projets.
Documentation Laravel
La version LTS du moment est la version 6. Vous pouvez retrouver le suivi de versions
Chaque version nécessitera une versions de PHP. Il faut donc le prendre en compte lors des développements en fonction du serveur hébergeant l'application.
Il existe plusieurs sites ou chaines youtube parlant de LARAVEL.
- Le tuto en anglais de The Net Ninja sur Laravel 6.
- La chaine de Nord Coders
- La chaine de GrafikArt
- Site en anglais Laracasts, nécessite d'être inscrit.
- Cours sur Laravel Sillo
Installation de Laravel
L'installation de LARAVEL nécessite :
- composer
- php
- php-cli
- php-curl
- Mbstring PHP Extension php-mbstring
- BCMath PHP Extension php-bcmath
- Ctype PHP Extension php-common
- Fileinfo PHP Extension
- JSON PHP Extension
- OpenSSL PHP Extension
- PDO PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension php-xml
Laravel nécessite la réécriture d'URL (mod_rewrite). Sous Apache2, cela se fait avec la commande a2enmode mod_rewrite
Les versions de Laravel
- Laravel 8+
- Laravel 6 version LTS -> 3 Sept 2022
Utilisation des permissions
Il faut installer le paquet via composer : > composer require spatie/laravel-permisison
Publier la migration > php artisan vendor:publish -provider="Spatie\Permission\PermissionSecurityProvider"
Nettoyer le cache de configuration > php artisan config:clear
Créer les tables dans la base de données > php artisan migrate
Création de PDF avec fpdf
Il faut installer le paquet via composer > composer require codedge/laravel-fpdf
Publier la migration > php artisan vendor:publish --provider="Codedge\Fpdf\FpdfServiceProvider" --tag=config
Lecture de fichiers Excel (R) avec SimpleXLSX
Il faut installer via composer > composer require shuchkin/simplexlsx
Attention car il utilise les bibliothèques obsolètes (jakub-onderka/php-console-color, jakub-onderka/php-console-highlighter et phpunit/php-token-stream)
Génération de graphiques
ConsoleTVS/Chart est obsolète
La meilleure façon de faire est de générer les charts depuis le Front.
Donc cela sera fait depuis une bibliothèque JS comme D3JS ou ChartJS.
Base de données :
Migrer la base de données : php artisan migrate:fresh
, l'option fresh permet de supprimer les tables de la base de données avant la création.
Afin de préremplir la base de données, il faut utiliser un Seeder.
La création du seeder se fait via la commande php artisan make:seeder nomtableSeeder
Ensuite, il faut mettre à jour l'autoloader avec la commande composer dump-autoload
L'exécution du remplissage se fait avec la commande php artisan db:seed
Si on ne veut pas tout Seeder mais une classe spécifique : php artisan db:seed --classDatabaseSeeder
.
Il est possible de passer des commandes via le module Tinker de Artisan php artisan tinker
On pourra envoyer des commandes php identiques à celles de l'application web.
Pour créer une entrée dans la base, il faut entrer la commande suivante :
DB::table('nom')->insert(['colonne1'=> 'valeur1', 'colonne2' => 'valeur2]);
Pour créer un utilisateur avec un mot de passe :
DB::table('users')->insert(['user' => 'administrateur', 'password' => Hash::make('password')]);
On peut aussi utiliser les commandes suivantes afin de gérer directement l'objet :
use App\Models\ModelName; $t = new ModelName'); $t->columnname="valeur";
Cas des procédures stockées
Dans Laravel, il est possible de créer des procédures stockées. Pour cela, il faut créer une migration avec la commande php artisan make:migration nom_procedure
Dans le fichier modèle, il faut modifier les fonctions up() et down() comme suit :
$store_procedure = "DROP PROCEDURE IF EXISTS 'nom_procedure'; CREATE PROCEDURE 'nom_procedure' (IN variable type) BEGIN SELECT * FROM table WHERE id = variable; END;"; DB::unprepared($store_procedure);
Dans la fonction down(), il faut mettre Schema::dropIfExists('nom_procedure');
L'appel de la procédure stockée se fait dans le contrôleur avec un DB::select('CALL nom_procedure(?)',[$variable]);
Déploiement
Pour le déploiement sur un serveur Apache, il faut que le dossier storage et ses sous-dossiers soient en R/W pour le groupe du service Apache (775).
Dans le cas de l'utilisation de SELinux, principalement pour les distributions basées sur RHEL, il faut que les dossiers soient en http_sys_rw_content_t.
Pour l'accès à la base de données, il faut que la variable httpd_can_network_connect_db soit à 1.
Le fichier de configuration du VirtualHost doit être de ce type
Listen 8080 <VirtualHost *:8080> DocumentRoot /var/www/html/app/public <Directory /var/www/html/app/public/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Require all granted </Directory> </VirtualHost>
Commandes en vrac :
Lancer un serveur php local : php artisan serve
Formation
Laravel intègre Laravel Sail, permettant de créer des conteneurs Docker pour le développement.
Tinker permet d'avoir une invite de commande au niveau de Laravel.