Zum Hauptinhalt springen
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

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