Aller au contenu principal
Page non répertoriée
Cette page n'est pas répertoriée. Les moteurs de recherche ne l'indexeront pas, et seuls les utilisateurs ayant un lien direct peuvent y accéder.

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