<?php // Require Loader if (file_exists("app/libraries/Autoload.php")) { require_once "app/libraries/Autoload.php"; } // Initialize all requires classes Autoload::init(); // To avoid triggering a PHP notice, we can't use array elements that do not exists if (!isset($_GET['url'])) { $_GET['url'] = '/'; } $router = new Router($_GET['url']); $router->setDefaultController('HomeController'); $router->setDefaultAction('index'); $router->parse(); $controller = $router->getController(); $action = $router->getAction(); $arguments = $router->getArguments(); $controllerClass = Controller::factory($controller); $actionName = $action; // This is the key part, we call a method that has a name stored in $stored $controllerClass->{$actionName}($arguments);
/** * apply curry.ini settings * * @return boolean */ public function applyConfig() { Loader::load('Ini', 'core'); Loader::load('Db', 'db'); $ini = false; if ($this->_appEnv == null) { // Default section is "product" $ini = Ini::load('database.ini', 'product'); } else { $ini = Ini::load('database.ini', $this->_appEnv); } if ($ini === false) { // For the compatibility of a old version. $ini = Ini::load('database.ini', 'connection'); } if ($ini !== false) { Db::setConfig($ini); } $ini = Ini::load('curry.ini'); if ($ini === false) { return false; } if (array_key_exists('dispatch', $ini)) { $values = $ini['dispatch']; $key = 'plugin_enabled'; if (array_key_exists($key, $values)) { if (is_numeric($values[$key]) && $values[$key] == 1) { $this->dispatcher->enablePlugin(true); } } $key = 'is_send_404'; if (array_key_exists($key, $values)) { if (is_numeric($values[$key]) && $values[$key] != 1) { $this->dispatcher->isSend404(false); } } $key = 'sub_controller_enabled'; if (array_key_exists($key, $values)) { if (is_numeric($values[$key]) && $values[$key] == 1) { $this->router->enableSubController(true); } } $key = 'is_rewrite'; if (array_key_exists($key, $values)) { if (is_numeric($values[$key]) && $values[$key] != 1) { $this->router->isRewrite(false); } } $key = 'default_controller'; if (array_key_exists($key, $values)) { $this->router->setDefaultController($values[$key]); } $key = 'default_action'; if (array_key_exists($key, $values)) { $this->router->setDefaultAction($values[$key]); } $key = 'controller_query_key'; if (array_key_exists($key, $values)) { $this->router->setControllerQueryKey($values[$key]); } $key = 'action_query_key'; if (array_key_exists($key, $values)) { $this->router->setActionQueryKey($values[$key]); } $key = 'controller_suffix'; if (array_key_exists($key, $values)) { NameManager::setControllerSuffix($values[$key]); } $key = 'action_suffix'; if (array_key_exists($key, $values)) { NameManager::setActionSuffix($values[$key]); } } if (array_key_exists('view', $ini)) { $values = $ini['view']; $key = 'class_name'; if (array_key_exists($key, $values)) { $this->dispatcher->setViewClass($values[$key]); } $key = 'layout_enabled'; if (array_key_exists($key, $values)) { if (is_numeric($values[$key]) && $values[$key] != 1) { ViewAbstract::setDefaultLayoutEnabled(false); } } $key = 'template_extension'; if (array_key_exists($key, $values)) { NameManager::setTemplateExtension($values[$key]); } } if (array_key_exists('request', $ini)) { $values = $ini['request']; $key = 'auto_trim'; if (array_key_exists($key, $values)) { if (is_numeric($values[$key]) && $values[$key] == 1) { Request::setAutoTrim(true); } } } if (array_key_exists('database', $ini)) { $values = $ini['database']; $key = 'is_singleton'; if (array_key_exists($key, $values)) { if (is_numeric($values[$key]) && $values[$key] == 0) { Db::setIsSingleton(false); } } } if (array_key_exists('logger', $ini)) { Loader::load('Logger', 'utility'); $values = $ini['logger']; $key = 'system_log'; if (array_key_exists($key, $values)) { Logger::setLogName($values[$key]); } $key = 'query_log'; if (array_key_exists($key, $values)) { Logger::setLogName($values[$key], 'query'); Db::enableLogging('query'); } $key = 'output_level'; if (array_key_exists($key, $values)) { $val = strtolower(trim($values[$key])); if (is_numeric($val) == false) { $levels = array('debug' => LogLevel::DEBUG, 'info' => LogLevel::INFO, 'warn' => LogLevel::WARN, 'error' => LogLevel::ERROR, 'except' => LogLevel::EXCEPT); if (array_key_exists($val, $levels)) { $val = $levels[$val]; } else { $val = LogLevel::NO_OUTPUT; } } Logger::setOutputLevel($val, 'query'); } $key = 'max_line'; if (array_key_exists($key, $values)) { Logger::setMaxLine($values[$key]); } $key = 'max_generation'; if (array_key_exists($key, $values)) { Logger::setGeneration($values[$key]); } } if (array_key_exists('loader', $ini)) { $values = $ini['loader']; $key = 'autoload_dirs'; if (array_key_exists($key, $values)) { $dirs = explode(',', $values[$key]); Loader::addAutoloadDirectory($dirs); } } return true; }
<?php namespace Router; require_once 'vendor/autoload.php'; $router = new Router(); $router->setDefaultModule('index'); $router->setDefaultController('index'); $router->setDefaultAction('index'); $router->add('/admin/controllers/user/show/:param', ['module' => 'Lib\\Controllers', 'controller' => 'user', 'action' => 'show', 'param1' => 1], ['method' => 'get']); $router->add('/', ['controller' => 'index', 'action' => 'index'], ['method' => 'get | post']); $router->add('/admin/:controller/:action', ['controller' => 1, 'action' => 2], ['method' => 'post']); $router->add('/admin/controllers/user/show/:param/:param', ['module' => 'Controllers', 'controller' => 'user', 'action' => 'show', 'param1' => 1, 'param2' => 2], ['method' => 'get']); $router->add('/admin/:module/users/show/:param', ['module' => 1, 'controller' => 'users', 'action' => 'show', 'param1' => 1], ['method' => 'get']); $router->add('/admin/users/show/:name', ['controller' => 'users', 'action' => 'show', 'name1' => 1], ['method' => 'get']); $router->add('/admin/cont/:action/:param/:param', ['controller' => 'cont', 'action' => 1, 'param1' => 2, 'param2' => 3], ['method' => "get | post"]); $route = $router->resolve(); foreach ($route as $key => $value) { echo $key . ': '; if (is_string($value)) { echo $value; } elseif (is_array($value)) { foreach ($value as $key2 => $value2) { echo '<br><span style="margin-left: 50px"><b>' . $key2 . ': ' . $value2 . '</b></span><br>'; } } echo '<br>'; }