2017-11-18 1 views
1

Ist es möglich, eine externe PHP-Bibliothek mit einem benutzerdefinierten Namespace zu verwenden, ohne die Quelle zu ändern?Wie kann ein benutzerdefinierter Namespace auf eine externe Bibliothek angewendet werden, ohne die Quelle zu ändern?

Ich möchte alle externen Bibliotheken mit Namespacepräfix "ext" verwenden.

Zum Beispiel möchte ich Predis 's Client-Klasse als neue ext \ Predis \ Client() anstelle von neuen Predis \ Client() (von root) instanziieren können.

PS .: Ich bin alle internen Klassen wie folgt selbstladende:

spl_autoload_register(function($class) 
{ 
    $path = str_replace("\\", "/", $class); 

    $file = __DIR__ . "/" . $path . ".php"; 

    require_once $file; 
}); 
+0

Bessere Idee .... ändern Sie jeden Namespace, den Sie für Ihren Predis-Wrapper verwenden, anstatt zu versuchen, den Namespace eines Drittanbieters zu ändern –

Antwort

1

Es ist nicht möglich. Namespaces werden zur Kompilierzeit aufgelöst. Es widerspricht auch die PSR standards:

Die vollständig qualifizierten Klassennamen einen Top-Level-Namespace-Namen haben muss, auch als „Vendor-Namensraum“ bekannt.

Verwandte Themen