Lorsque vous créez une bibliothèque de fonctions personnalisées, Laravel vous offre différentes techniques pour rendre votre bibliothèque disponible dans votre code.
Prenons le cas du fichier debogage.php placé dans le dossier app\utilitaires. Il est possible de le rendre disponible pour un contrôleur à l'aide d'un include_once() placé au début de ce contrôleur.
Ex :
include_once(app_path() . '/utilitaires/debogage.php');
...
public function ...
{
...
ddsafe(Produit::count());
}
Par contre, il serait plus intéressant de le rendre automatiquement disponible pour tout le projet.
Le fichier composer.json vous permettra d'y arriver. Vous devez pour cela ajouter une référence à votre fichier dans la section autoload.
Ex :
{
"name": "laravel/laravel",
...
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/utilitaires/debogage.php"
]
},
...
}
Vous devez maintenant demander à composer de réinitialiser la liste des fichiers à charger automatiquement :
composer dump-autoload -o
Les fichiers et dossiers mis à jour par cette commande sont :
Dans le cas où vous développez une bibliothèque personnelle qui contient des classes, vous pouvez choisir de charger automatiquement toutes les classes appartenant à un espace de nom (namespace).
Ex :
namespace App\MaBibliotheque;
...
class ...
{
...
}
L'instruction suivante chargera automatiquement toutes les classes qui correspondent à cet espace de nom.
Ex :
{
"name": "laravel/laravel",
...
"autoload": {
"classmap": [
"database",
"app/MaBibliotheque"
],
"psr-4": {
"App\\": "app/"
}
},
...
}
Vous devrez ici aussi effectuer un composer dump-autoload.
Une fois ces étapes complétées, vous pourrez utiliser votre bibliothèque de fonctions dans tout votre projet.
« How to use external classes and PHP files in Laravel Controller? ». Laravel Daily. http://laraveldaily.com/how-to-use-external-classes-and-php-files-in-laravel-controller/
« Composer's autoload-dev ». Hannes Van De Vreken. https://hannesvdvreken.com/2015/01/28/autoload-dev/
▼Publicité