/** * This must allow some shortcuts to access a service * * @param string $name * @param array $arguments * @return mixed */ public static function __callStatic($name, array $arguments) { // getNew('name') if ($name == 'getNew') { $service_name = isset($arguments[0]) ? $arguments[0] : null; array_shift($arguments); if (!empty($service_name)) { return AppKernel::getInstance()->unsetService($service_name)->getService($service_name, $arguments); } return null; // get('name') or getName() } elseif (substr($name, 0, 3) == 'get') { if (strlen($name) > 3) { $service_name = substr($name, 3); } else { $service_name = isset($arguments[0]) ? $arguments[0] : null; array_shift($arguments); } if (!empty($service_name)) { return AppKernel::getInstance()->getService($service_name, $arguments); } return null; // set('name', $obj) or setName($obj) } elseif (substr($name, 0, 3) == 'set') { if (strlen($name) > 3) { $service_name = substr($name, 3); $service_callback = isset($arguments[0]) ? $arguments[0] : null; $service_overwrite = isset($arguments[1]) ? $arguments[1] : null; } else { $service_name = isset($arguments[0]) ? $arguments[0] : null; $service_callback = isset($arguments[1]) ? $arguments[1] : null; $service_overwrite = isset($arguments[2]) ? $arguments[2] : null; } if (!empty($service_name) && !empty($service_callback)) { if (!empty($service_overwrite)) { AppKernel::getInstance()->setService($service_name, $service_callback, $service_overwrite); } else { AppKernel::getInstance()->setService($service_name, $service_callback); } } } return null; }
})->addRoute('/hello/{name}', function ($name) use($fctrl) { return 'Hello ' . $name; })->addRoute('/hello/{name}/controller', 'Demo\\DefaultController')->addRoute('/hello/{name}/method', 'mytest')->addRoute('/hello/{name}/view', 'src/templates/test.php')->addRoute('/hello/{name}/myview', 'myview')->addRoute('/hello/{name}/id/{id:\\d+}', 'args')->addRoute('/hello/{name}/id/{id:\\d+}/alt', 'altargs')->addRoute('/hello/{name}/test', array('\\Demo\\TestController', 'test'))->addRoute('/form', 'form')->addRoute('/saveform', 'saveForm', 'post')->addRoute('/error', function () use($fctrl) { trigger_error('a user test error ...', E_USER_ERROR); })->addRoute('/exception', function () use($fctrl) { throw new \Exception('a user test exception ...'); })->addRoute('/notfoundexception', function () use($fctrl) { throw new \MVCFundamental\Exception\NotFoundException('a user test exception ...'); })->addRoute('/accessforbiddenexception', function () use($fctrl) { throw new \MVCFundamental\Exception\AccessForbiddenException('a user test exception ...'); })->addRoute('/servererror', function () use($fctrl) { throw new \MVCFundamental\Exception\InternalServerErrorException('a user test exception ...'); })->addRoute('/twoexceptions', function () use($fctrl) { throw new \MVCFundamental\Exception\InternalServerErrorException('a user test exception ...', 1, new \MVCFundamental\Exception\Exception('a secondary (previous) exception ...')); })->addRoute('/debug', function () use($fctrl) { \MVCFundamental\Commons\Helper::debug(\MVCFundamental\AppKernel::getInstance()); })->addRoute('/logs', function () use($fctrl) { $log_dir = $fctrl->getOption('temp_dir'); $dh = opendir($log_dir); $logs = array(); $logs[] = 'LOGS DIR : ' . $log_dir; while (false !== ($filename = readdir($dh))) { if (substr($filename, -4) == '.log') { $logs[] = '##### ' . $filename; $logs[] = file_get_contents($log_dir . '/' . $filename); } } call_user_func_array(array('MVCFundamental\\Commons\\Helper', 'debug'), $logs); })->on('event.1', array('Demo\\DefaultController', 'eventHandler'))->addRoute('/test/event2', function () use($fctrl) { $fctrl->trigger('event.2'); return 'Event 2 was triggered';