Table des matières

Créer un package Laravel

Installation de Laravel

mkdir monprojet
cd monprojet
composer create-project laravel/laravel --prefer-dist .

Dossier du package

Créer un dossier packages à la racine du projet puis ajouter un dossier [VENDORNAME]/[PACKAGENAME]. Exemple : sebastienheyd/monpackage.

Dans ce dossier ajouter un dossier src

mkdir -p packages/sebastienheyd/monpackage/src

Composer.json du package

On génère ensuite le composer.json en saisissant la commande :

cd packages/sebastienheyd/monpackage
composer init

Dans le fichier composer.json qui vient d'être généré, ne pas oublier de rajouter les lignes pour le PSR-4, exemple :

"autoload": {
    "psr-4": {
        "Sebastienheyd\\Monpackage\\": "src/"
    }
},

Composer.json du projet

Une fois fait, on modifie le composer.json à la racine du projet pour déclarer le package :

"minimum-stability": "dev",
"repositories": [{
    "type": "path",
    "url": "packages/*/*",
    "symlink": true
}],
"require": {
    // ...
    "sebastienheyd/monpackage": "*"
},

Pour finir on lance :

composer update

Créer un service provider

Pour créer le service provider :

php artisan make:provider MonpackageServiceProvider

Puis déplacer le fichier généré dans le dossier du package :

mv app/Providers/MonpackageServiceProvider packages/sebastienheyd/monpackage/src

Attention à bien changer le namespace dans le provider par [VENDORNAME]\[PACKAGENAME]

Dans le composer.json du package on ajoute l'autodiscover :

"extra": {
    "laravel": {
        "providers": [
            "Sebastienheyd\\Monpackage\\MonpackageServiceProvider"
        ]
    }
}

Pour la suite, voir ici : https://laraveldaily.com/how-to-create-a-laravel-5-package-in-10-easy-steps/