tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
506
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Sep 2003
    Ort
    Fürth(Franken)
    Beiträge
    1.060
    Blog-Einträge
    3
    Hallo!

    Puh, der Titel klingt vielleicht etwas verwirrend deshalb erläutere ich mein Problem mal genauer.

    Ich habe eine Klasse, nennen wir sie ModuleLoader.

    Diese Klasse besitzt eine Methode namens _load(), der man als Parameter den Namen eines Moduls übergibt.

    Als Beispielmodul nehmen wir nun mal die Klasse FooBar, die nach dem Singleton-Pattern aufgebaut ist und eine Funktion namens getInstance() um eine Instanz zu bekommen besitzt.

    Der Funktionsaufruf lautet folgedessen _load('FooBar').
    Diese Funktion sucht dann nach der Datei und bindet diese ein und versucht anschließend eine Instanz zu bekommen.

    Der Aufruf sieht dann so aus:
    PHP-Code:
    public function _load($moduleName) {
        
    // ... require_once() etc...
        
    return $moduleName::getInstance(); // Hier scheitert das ganze!

    Ich weiß nicht wie ich die Funktion der Klasse aufrufen soll, denn so wie ich es probiert habe, lieferte mir PHP immer folgenden Fehler:
    Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM ....

    Was soll ich tun? Wie soll ich die Methode sonst aufrufen?

    Ich hoffe ihr versteht mein Anliegen und könnt mir unter die Arme greifen.

    greetz
    daddz
     
    be inspired...simplify...

  2. #2
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    Da ich demnächst selber vor dem Problem stehe, habe ich gleich mal einen Testfall gebaut:
    PHP-Code:
    <?php
    class TestSingleton {
        private static 
    $instance null;

        private 
    $createTime null;

        private function 
    __construct() {
            
    $this->createTime time();
        }

        public static function 
    getInstance() {
            if (
    self :: $instance == null) {
                
    self :: $instance = new TestSingleton();
            }
            return 
    self :: $instance;
        }

        public function 
    echoCreationTime() {
            echo 
    date('Y-m-d H:i:s');
        }

    }

    $className 'TestSingleton';

    call_user_func(array ($className'getInstance'))->echoCreationTime();

    ?>
    Mit call_user_func() funktioniert es, aber einfachere Schreibweisen sind willkommen.

    Gruß hpvw
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

  3. #3
    Registriert seit
    Sep 2003
    Ort
    Fürth(Franken)
    Beiträge
    1.060
    Blog-Einträge
    3
    Oh, danke.

    Zumindest kann ich mit diesem call_user_func-"work-around" vorankommen.

    Falls jemand eine andere bzw. elegantere Lösung weiß, her damit.
    Schließlich gibt es nun schon 2 Interessenten!

    greetz
    daddz
     
    be inspired...simplify...

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 24.05.10, 14:19
  2. Innerhalb einer Klasse eine Instanz einer anderen Klasse
    Von HackerNeo im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 17.11.09, 13:08
  3. Antworten: 3
    Letzter Beitrag: 18.12.07, 15:38
  4. Antworten: 1
    Letzter Beitrag: 31.08.06, 10:24
  5. Antworten: 4
    Letzter Beitrag: 28.10.02, 00:47