/** * 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 // 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);