Ankündigung

Einklappen
Keine Ankündigung bisher.

__call()+MySQL-Klasse

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • __call()+MySQL-Klasse

    hallo, sry für den titel, aba ich weis grad nix besseres!
    zu meinem Problem:
    ich hab eine MySQL-Klasse geschrieben, die falls eine methode nicht existiert die __call() methode aufruft!
    wenn ich zB $db->num_rows($result) aufrufe soll mir die __call methode mysql_num_rows() aufrufen.ok eigentlich klappt das ja auch, nur hab ich ein Problem, dass ich nicht weis wieviel parameter die funktion benötigt und von welchem typ diese sind.
    so hab ichs als erstes versucht:
    PHP-Code:
    <?
            public function __call($method, $args) {
                $func = 'mysql_'.$method;
                $args = implode(', ', $args);
                if(function_exists($func))
                    return $func($args);
                else
                    throw new Exception('Funktion '.$func.' existiert nicht!', __LINE__);
            }
    ?>
    das geht natürlich nicht weil zB mysql_num_rows() einen parameter vom type "resource" benötigt!
    dann hab ich eine (unelegante) lösung gefunden:
    PHP-Code:
    <?
            public function __call($method, $args) {
                $func = 'mysql_'.$method;
                $num = count($args);
                if(function_exists($func))
                    switch($num) {
                        case(1):
                            return $func($args[0]);
                        case(2):
                            return $func($args[0], $args[1]);
                        case(3):
                            return $func($args[0], $args[1], $args[2]);
                        case(4):
                            return $func($args[0], $args[1], $args[2], $args[3]);
                        //...usw.
                    }
                else
                    throw new Exception('Funktion '.$func.' existiert nicht!', __LINE__);
            }
    ?>
    is halt bisschen blöd, will net unbedingt die switch gaaaaaanz lang zu erweitern!
    kennt ihr zufällig ne ellegante, wirkungsvolle lösung?
    danke für hilfe!

    eagleScripts.de


  • #2
    http://de2.php.net/manual/de/functio...-user-func.php

    Kommentar


    • #3
      oh cool danke!
      hatte gedacht das das nur bei selbst definierten funktionen geht

      eagleScripts.de

      Kommentar

      Lädt...
      X