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
<?php /** * Interface für die Values under MySQL */ interface ISqlValue{ public function getSql(); } /** * Abstrakte Klasse die alle gemeinsamen Funktionen enthält * In diesem Beispiel der Konstrukteur */ abstract class ASqlValue implements ISqlValue{ public function __construct($value){$this->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); ?>