Skip to content

Runtime-Auswahl

FG Core ist so aufgebaut, dass mehrere FUNCKGROUP-Plugins jeweils eine eingebettete Core-Kopie mitbringen können. Der Bootstrap sammelt diese Kandidaten und startet anschließend genau eine Runtime.

Jede Kopie liest ihr manifest.php. Für einen gültigen Kandidaten müssen folgende Angaben vorhanden sein:

  • version
  • api_version größer oder gleich 1
  • requires_php
  • lesbare entry_file

Version 1.1.3 verwendet:

[
'version' => '1.1.3',
'api_version' => 1,
'requires_php' => '7.4',
'entry_file' => __DIR__ . '/src/class-fg-admin-core.php',
]

Ein fehlendes oder ungültiges Manifest wird als Loader-Fehler erfasst. Eine Core-Kopie, deren PHP-Anforderung nicht erfüllt ist, wird nicht als nutzbarer Kandidat gestartet.

Auf plugins_loaded mit Priorität -9999 sortiert der Loader die gefundenen Kandidaten nach:

  1. höherer version
  2. höherer api_version, wenn die Version gleich ist
  3. Provider-Name als deterministischer Tie-Breaker

Der erste Kandidat dieser Sortierung wird gestartet.

Vor dem Laden der Runtime definiert der Bootstrap, sofern noch nicht vorhanden:

  • FG_CORE_VERSION
  • FG_CORE_API_VERSION
  • FG_CORE_PROVIDER

Nach erfolgreichem Start wird die Action fg_core_loaded ausgelöst.

fg_core_register_plugin() kann aufgerufen werden, bevor die Runtime gestartet ist. In diesem Fall wird die Registrierung im globalen Loader-State zwischengespeichert und beim Booten an die aktive AdminCore-Instanz übergeben.

Nach dem Core-Start leitet die Funktion neue Registrierungen direkt an AdminCore::register_plugin() weiter.

Die Runtime stellt den Alias FG_Admin_Core für Funckgroup\FGCore\AdminCore bereit, sofern der alte Klassenname noch nicht existiert.

Der Bootstrap erkennt zusätzlich den Fall, dass bereits eine andere Klasse unter FG_Admin_Core geladen wurde, und hinterlegt dazu einen Loader-Fehler. Die Meldung weist darauf hin, ältere Integrationen auf den Bootstrap-Loader umzustellen.

Die Auswahl berücksichtigt nur Kandidaten, deren Bootstrap tatsächlich von einem geladenen Plugin eingebunden wurde. FG Core lädt zur Laufzeit keine neue Version aus GitHub oder Composer nach und ersetzt keine PHP-Dateien auf der WordPress-Installation.