Switch Alternative bei Funktionsunterscheidung

Flex

(aka Felix Jacobi)
Hallo, ich mache momentan zur Übung eine kleine MySQL Klasse, die das Handling ein wenig erleichtern soll.

PHP:
public function fetch($sql, $type = "ASSOC") {
		switch($type) {
			case "ASSOC":
				$i = 0;
				while($row = mysql_fetch_assoc($this->query)) {
					$this->result[$i] = $row;
					$i++;
				}
			break;
			case "OBJ":
				$i = 0;
				while($row = mysql_fetch_object($this->query)) {
					$this->result[$i] = $row;
					$i++;
				}
			break;
			case "ROW":
				$i = 0;
				while($row = mysql_fetch_row($this->query)) {
					$this->result[$i] = $row;
					$i++;
				}
			break;
			}
		if(mysql_errno() != "") {
		$this->error();		
		exit;
		}
		return $this->result;
	}

Der Switch gefällt mir eigentlich überhaupt nicht... Weiterhin bin ich für Ratschläge zur Optimierung sehr offen ;)
 
Zuletzt bearbeitet:
In meiner SQL-Klasse habe ich was aehnliches um die Funktionen fuer die unterschiedlichen DBMS aufzurufen.
Hier mal fetch_row() als Beispiel:
PHP:
public function fetch_row()
{
	$function='fetch_row_'.$this->type;
	return $this->{$function}();
}

Du solltest das fuer Dich umsetzen koennen wenn Du anstelle von OBJ OBJECT uebergibst, z.B. so:
PHP:
public function fetch($sql, $type = "ASSOC")
{
 $function='mysql_fetch_'.$type;
 if (function_exists($function))
 {
  return $function($sql);
 }
else
 {
  return false;
 }
 
Hmm, das hatte ich bereits versucht, klappte aber nicht. Dank deinem Beispiel weiß ich jetzt auch warum, ich hatte normale Anführungszeichen benutzt.:rolleyes:
Danke ;)
 
Zurück