class Site {
function Start() {}
- function Finish() {}
-
function Call($MODULE, $METHOD) {
$nCalls = 0;
- if (file_exists('site/'.$MODULE.'.php')) {
+ if (file_exists(strtolower('site/'.$MODULE.'.php'))) {
require_once strtolower('site/'.$MODULE.'.php');
if (class_exists($MODULE)) {
- $object = new $MODULE;
- $object->Start();
- $handlers = $object->get_handlers($METHOD);
+ $page = new $MODULE($this, $METHOD);
+ $page->Start();
+ $handlers = $page->get_handlers($METHOD);
switch ($METHOD) {
case 'GET':
case 'get':
}
foreach($handlers as $handler) {
if (isset($argv[$handler]) &&
- is_callable($object, $handler)) {
- call_user_func_array(array($object, $handler), $argv);
+ false !== $page->Call($handler, $argv)) {
$nCalls++;
}
}
- if ($nCalls == 0 && is_callable($object, 'default')) {
- call_user_func_array(array($object, $handler), $argv);
+ if ($nCalls == 0 && is_callable(array($page, '_default'))) {
+ $page->Call('_default', $argv);
$nCalls++;
}
- $object->Finish();
+ $page->Finish();
}
}
return $nCalls;
}
+ function Finish() {}
}
class Page {
- function Start() {}
- function Finish() {}
-
- function get_handlers($method) {
- $handlers = isset($this->handlers[$method]) ?
- $this->handlers[$method] :
- array('default');
+ var $site, $method;
+ function __construct($site, $method) {
+ $this->site = $site;
+ $this->method = $method;
+ }
+ function get_handlers() {
+ $handlers = isset($this->handlers[$this->method]) ?
+ $this->handlers[$this->method] : array();
return $handlers;
- //return array_map(
- // create_function('$a','return "_'.$method.'_".$a;'),
- // $this->handlers[$method]);
}
+ function has_handler($handler) {
+ return isset($this->handlers[$this->method]) ? in_array($handler, $this->handlers[$this->method]) : false;
+ }
+
+ function Start() {}
+ function Call($handler, $argv) {
+ if (is_callable(array($this, $handler)))
+ return array(0, call_user_func_array(array($this, $handler), $argv));
+ else return false;
+ }
+ function Finish() {}
}