======[PHP] Interface / Abstrakte Klassen====== Ein kleines einfaches Beispiel für Interface und Abstrakte Klassen. Es geht darum, zu zeigen wie die verschiedenen Logiken in die Klassen eingebaut werden und mit gemeinsamen Interface benuetzt werden können value = $value;} } /** * Klasse für Nummern */ class SqlValueNumber extends ASqlValue implements ISqlValue{ public function getSql(){return $this->value;} } /** * Klasse für Strings */ class SqlValueString extends ASqlValue implements ISqlValue{ public function getSql(){return "'{$this->value}'";} } /** * Klasse für Datum */ class SqlValueDate extends ASqlValue implements ISqlValue{ public function getSql(){return "'".date( 'Y-m-d H:i:s', $this->value )."'";} } /** * Funktion zur Erstellen eines Where-Strings * @param $varobj Objekt mit dem Interface ISqlValue * @param $varname Name des Feldes in der DB */ function getWhere(ISqlValue $varobj, $varname){ //Da lle Obejkte dem Interface ISqlValue entsprechen, //können wir hier auf die mehtode getSql() zugreiffen, egal welche //der Klassen dahintersteckt return "{$varname} = ".$varobj->getSql(); } //Testcode: Erstellen der Objekte $wheres[] = getWhere(new SqlValueNumber(123), 'zahl'); $wheres[] = getWhere(new SqlValueString('abc'), 'text'); $wheres[] = getWhere(new SqlValueDate(time()), datum); //Ausgeben des WHERE-Strings echo implode(' AND ', $wheres); ?> {{tag>PHP}}