Guida allo sviluppo di plugin
Gäld supporta un sistema di plugin per estendere le funzionalità senza modificare l'applicazione principale.
Struttura di 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');
}
}
Attivare un plugin
I plugin vengono rilevati automaticamente dalla directory plugins/. Ogni plugin deve avere un file plugin.json valido con una classe provider.
Accesso ai servizi principali
I plugin possono iniettare i servizi principali:
use App\Domains\Accounting\Services\LedgerService;
public function boot(LedgerService $ledger): void
{
// Use the ledger service
}
Buone pratiche
- Utilizzare un namespace per il proprio plugin:
YourPlugin\\ - Utilizzare le migrazioni del database per le modifiche allo schema
- Registrare le route con un prefisso univoco
- Utilizzare il namespace delle viste del plugin per evitare conflitti