';
if(!in_array($action,$this->validActions)) {
$this->invalidAction();
} elseif(method_exists($this,$action)) {
$this->$action();
} elseif(method_exists($this,'defaultAction')) {
$this->defaultAction();
} else {
die('Geen default action ingesteld voor deze klasse!');
}
}
}
// Extends super with actions and other functions. Only actions should be allowed to be called through determineAction
class subclass extends superclass {
var $validActions = array('showPage','destroyDatabase');
function showPage() {
echo 'Hier een actie van subclass genaamd showPage...
';
}
function destroyDatabase() {
echo 'Database wissen mislukt, probeer het via Enterprise Manager!
';
}
function defaultAction() {
echo 'De defaultAction van subclass...
';
}
}
class wrongsubclass extends superclass {
function showPage() {
echo 'Foute subklasse laat van zich horen...
';
}
}
$test = new subclass();
$test->determineAction('Foo'); // Action does not exist, should show subclass::defaultAction
$test->determineAction('showPage'); // Does exist, should show subclass::showPage
$test2 = new foutesubclass();
$test2->determineAction('Foo'); // Doesn't exist, missing defaultAction
?>