Guide de développement de plugins
Gäld prend en charge un système de plugins permettant d'étendre les fonctionnalités sans modifier l'application principale.
Structure d'un plugin
plugins/
└── my-plugin/
├── plugin.json
├── src/
│ └── MyPluginServiceProvider.php
├── routes/
│ └── web.php
├── resources/
│ └── views/
└── migrations/
plugin.json
{
"name": "My Plugin",
"version": "1.0.0",
"description": "Description of what this plugin does",
"author": "Your Name",
"provider": "MyPlugin\\MyPluginServiceProvider"
}
Service Provider
<?php
namespace MyPlugin;
use Illuminate\Support\ServiceProvider;
class MyPluginServiceProvider extends ServiceProvider
{
public function register(): void
{
// Bind services
}
public function boot(): void
{
// Load routes
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
// Load views
$this->loadViewsFrom(
__DIR__.'/../resources/views',
'my-plugin'
);
// Load migrations
$this->loadMigrationsFrom(__DIR__.'/../migrations');
}
}
Activer un plugin
Les plugins sont automatiquement découverts depuis le répertoire plugins/. Chaque plugin doit disposer d'un fichier plugin.json valide avec une classe provider.
Accéder aux services principaux
Les plugins peuvent injecter les services principaux :
use App\Domains\Accounting\Services\LedgerService;
public function boot(LedgerService $ledger): void
{
// Use the ledger service
}
Bonnes pratiques
- Utilisez un namespace pour votre plugin :
YourPlugin\\ - Utilisez les migrations de base de données pour les modifications de schéma
- Enregistrez les routes avec un préfixe unique
- Utilisez le namespace de vues du plugin pour éviter les conflits