-
Notifications
You must be signed in to change notification settings - Fork 15
Description
Was mir aufgefallen ist: die verfügbaren Streams werden aus dem Dateisystem zusammengesucht
Lines 91 to 100 in a726ac6
| $files = glob(__DIR__ . '/Stream/' . '*.php'); | |
| if ($files) { | |
| foreach ($files as $file) { | |
| $filename = basename($file, '.php'); | |
| if ($filename !== 'AbstractStream') { | |
| $type = strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $filename)); | |
| self::$streams[$type] = 'FriendsOfRedaxo\\Feeds\\Stream\\' . $filename; | |
| } | |
| } | |
| } |
Das könnte man anders und so gestalten, dass Anwender eigene Streams einbinden, z.B. über Addons oder eben eigenen Individualcode. Dazu müsste die Stream-Auffindung etwas anders laufen.
Zwei Vorschläge:
Über den Namespace FriendsOfRedaxo\Feeds\Stream
Kurzfassung: mit der Methode rex_autoload::getClasses() bekommt man alle Klassennamen inkl. des vorangestellten Namespace. Filtern nach dem Ziel-Namespace und man hat die Streams, auch wenn sie in einem anderen Addon liegen.
Nachteil: PSR-4 wird verletzt, da für die Streams in anderen Addons der Namespace nicht auf das tatsächliche Verzeichnis verweist. Je nun.
Registrierungszwang
Die Streams werden ähnlich wie CronJobs oder APIs per Methode registriert.