Zum Hauptinhalt springen
How can we help?
< Alle Themen
Drucken

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
War dieser Artikel hilfreich?
0 out Of 5 Stars
5 Sterne 0%
4 Sterne 0%
3 Sterne 0%
2 Sterne 0%
1 Sterne 0%
5
Wie können wir diesen Artikel verbessern?
Wie können wir diesen Artikel verbessern?
Inhaltsverzeichnis