User Tools

Site Tools


php:interfacebsp

[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

<?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);
 
?>
php/interfacebsp.txt · Last modified: 09.12.2013 09:39:54 (external edit)