MB: dynamisch mit namespace klassen einbinden

moin,

wie kriege ich es hin das dynamisch klassen mit namespace instanziiert werden oder wenns statische klassen sind.

beispiel:

new \controller\home( $data ); // das soll rauskommen
new $ns . $controller( $data ); // probiert habe ich

Hab schon php.net durchforstet. Tipp?

vlg MB

  1. Tach!

    wie kriege ich es hin das dynamisch klassen mit namespace instanziiert werden oder wenns statische klassen sind.

    So.

    beispiel:

    new \controller\home( $data ); // das soll rauskommen
    new $ns . $controller( $data ); // probiert habe ich
    

    Hab schon php.net durchforstet. Tipp?

    Genauere Angaben, was du schon durchforstet hast sind hilfreich beim Beantworten solcher Fragen, damit ich mir nicht doppelte Arbeit machen muss. Alles kann es jedenfalls nicht sein, denn du hast da anscheinend die oben verlinkte Seite nicht gesehen. So kann ich dir nur das empfehlen, was du vielleicht schon gesehen hast.

    Jedenfalls muss man auch noch die Operatoren-Rangfolge beachten. Ein new ist stärker als ein .. Also erst den String komplett in einer Variable ablegen oder Klammern verwenden.

    dedlfix.

    1. Vermutlich ist auch der Function Call operator () stärker als die Stringverkettung.

      new "$ns$controller"($data);
      new ($ns.$controller)($data);

      sollte demnach beides gehen, hab's jetzt nicht ausprobiert. Du musst nur aufpassen, ob Du in $ns den Backslash am Ende hast und ggf. ein '' in deine Namenskonstruktion aufnehmen. Hier stehen einige Vorschläge, wie man Pfade sicher kombinieren kann.

      Gruß
      Rolf

    2. Woa hat geklappt. Ich danke.