*/ class Site { function Start() {} function Finish() {} function Call($MODULE, $METHOD) { $nCalls = 0; if (file_exists('site/'.$MODULE.'.php')) { require_once strtolower('site/'.$MODULE.'.php'); if (class_exists($MODULE)) { $object = new $MODULE; $object->Start(); $handlers = $object->get_handlers($METHOD); switch ($METHOD) { case 'GET': case 'get': $argv = array_merge($_COOKIE, $_FILES, $_POST, $_GET, isset($_SESSION)?$_SESSION:array()); break; case 'POST': case 'post': default: $argv = array_merge($_COOKIE, $_FILES, $_GET, $_POST, isset($_SESSION)?$_SESSION:array()); break; } foreach($handlers as $handler) { if (isset($argv[$handler]) && is_callable($object, $handler)) { call_user_func_array(array($object, $handler), $argv); $nCalls++; } } if ($nCalls == 0 && is_callable($object, 'default')) { call_user_func_array(array($object, $handler), $argv); $nCalls++; } $object->Finish(); } } return $nCalls; } } class Page { function Start() {} function Finish() {} function get_handlers($method) { $handlers = isset($this->handlers[$method]) ? $this->handlers[$method] : array('default'); return $handlers; //return array_map( // create_function('$a','return "_'.$method.'_".$a;'), // $this->handlers[$method]); } }