PHP: RuBisCO Todo
RuBisCO Todo ist ein einfaches Webprogramm für To-do-Listen -- es dient zur Planung für den Aufbau der RuBisCO-Site.
Task
Zentrale Klasse ist Task. Sie dient als Active Record zum Speichern und Lesen der Daten und überprüft zugleich, ob die eingegebenen Daten dem gewünschten Muster entsprechen.
class Task {
private $todo;
private $dbh;
private $getFilter = 'RAW';
private $_id = null;
private $_task = null;
private $_status = null;
public function read($id = null) ...
public function insert() ...
public function update() ...
public function delete() ...
...
}// Task
Überschreiben von __set()
Dazu wird die __set()-Methode überschrieben. Diese wird von PHP aufgerufen wenn mit $task->id = 42 eine Zuweisung erfolgt und die Eigenschaft, in diesem Fall 'id', nicht im Objekt existiert oder nicht für den Aufrufer sichtbar ist, z.B. weil sie als private deklariert ist und die Zuweisung wie hier von außen und nicht innerhalb des Objekts mit $this->id = 42 erfolgt. Damit __set() auch innerhalb aufgerufen wird ist in Task den Eigenschaften (id, task, status) ein _ vorangestellt: $_id, $_task, $_status.
Überschrieben ist __set() so, dass eine zur jeweiligen Eigenschaft dazugehörige Methode aufgerufen wird id -> setId(), task -> setTask(), ... bzw. eine Exception geworfen wird, wenn die Eigenschaft nicht existiert.
public function __set($name, $value) {
$methodeName = 'set' . ucfirst($name);
if(method_exists($this, $methodeName)) {
$this->$methodeName($value);
} else {
throw new Exception(__CLASS__ ." No '{$name}' attribute");
}
}// __set
Überprüfung in setXXX()
In den setXXX()-Methoden wird dann überprüft, ob die Eingabe dem gewünschten Muster entspricht.
public function setId($value) {
if(preg_match('/^\d+$/', $value)) {
$this->_id = $value;
return $this;
} else {
throw new Exception(__CLASS__ . " Wrong value for id attribute.");
}
}// setId
Quelltext (MIT Lizenz)
Der komplette Quelltext von RuBisCO Todo liegt in Subversion.
