Skip to content

Streams-Liste dynamisch erweitern #233

@christophboecker

Description

@christophboecker

Was mir aufgefallen ist: die verfügbaren Streams werden aus dem Dateisystem zusammengesucht

feeds/lib/Stream.php

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions