How can we help?
Namespace-Struktur
Übersicht
Alle oMM-Plugins folgen einer einheitlichen Namespace-Konvention basierend auf PSR-4 Autoloading.
Basis-Namespace
OpenMindMesh\{PluginName}\
Standard-Unternamespaces
| Namespace | Zweck | Beispiel-Klassen |
|---|---|---|
Core\ |
Kern-Funktionalität | Plugin, Installer, Loader |
Admin\ |
Admin-Oberfläche | Settings, MetaBoxes |
API\ |
REST-API & externe APIs | RestController, ZoteroClient |
Frontend\ |
Frontend-Darstellung | Shortcodes, Templates |
Editor\ |
Gutenberg-Integration | Blocks, BlockPatterns |
Verzeichnisstruktur
omm-citations/ ├── omm-citations.php # Plugin-Hauptdatei ├── includes/ │ ├── Core/ │ │ ├── Plugin.php # OpenMindMesh\Citations\Core\Plugin │ │ └── Installer.php # OpenMindMesh\Citations\Core\Installer │ ├── Admin/ │ │ └── Settings.php │ ├── API/ │ │ ├── ZoteroClient.php │ │ └── CslParser.php │ ├── Frontend/ │ │ └── Shortcodes.php │ └── Editor/ │ └── Blocks.php ├── assets/ ├── languages/ └── templates/
Autoloader einrichten
<?php
namespace OpenMindMesh\Citations;
spl_autoload_register(function ($class) {
$prefix = 'OpenMindMesh\\Citations\\';
$base_dir = __DIR__ . '/includes/';
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
return;
}
$relative_class = substr($class, $len);
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
if (file_exists($file)) {
require $file;
}
});
Best Practices
- Eine Klasse pro Datei: Der Dateiname muss dem Klassennamen entsprechen
- Namespace in jeder Datei: Jede PHP-Datei beginnt mit der Namespace-Deklaration
- Keine Unterstriche: Verwende CamelCase für Klassennamen