Leitfaden zur Plugin-Entwicklung
Gäld unterstützt ein Plugin-System zur Erweiterung der Funktionalität, ohne die Kernanwendung zu verändern.
Plugin-Struktur
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');
}
}
Ein Plugin aktivieren
Plugins werden automatisch aus dem Verzeichnis plugins/ erkannt. Jedes Plugin muss eine gültige plugin.json mit einer provider-Klasse enthalten.
Zugriff auf Kerndienste
Plugins können Kerndienste injizieren:
use App\Domains\Accounting\Services\LedgerService;
public function boot(LedgerService $ledger): void
{
// Use the ledger service
}
Best Practices
- Verwenden Sie einen Namespace für Ihr Plugin:
YourPlugin\\ - Nutzen Sie Datenbank-Migrationen für Schemaänderungen
- Registrieren Sie Routen mit einem eindeutigen Präfix
- Verwenden Sie den View-Namespace des Plugins, um Konflikte zu vermeiden