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:
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:
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!
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__);
}
?>
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__);
}
?>
kennt ihr zufällig ne ellegante, wirkungsvolle lösung?
danke für hilfe!
Kommentar