Сценарий Система имеет классы, объявленные в /system/classes/
.Приложение имеет классы, объявленные в /application/classes/
.
Если в папке application есть класс, имя которого совпадает с именем класса в папке system , то класс в приложении папка должна расширять класс в папке system .
Не все классы в папке system будут перезаписаны классом в приложении папка.
Вопрос Как можно заставить класс в папке system расширять класс в приложении class только , если в приложении есть класс folder.
NB: Все классы, которые могут быть перезаписаны, являются статическими классами
NB: Даже если нам нужно назвать application classes my_className все в порядке, пока мы можем просто позвонить className::functionName()
Я думаю, я ищу что-то похожее на то, как это делает Code Igniter.
Редактировать
Пример классаПриведенный ниже класс используется в качестве загрузчика для загрузки во всех других классах (будь то библиотеки, процессы или другие).Он также используется для загрузки в файлы css / image / js и т. Д.
Если пользователь должен расширить класс, он может захотеть добавить функцию ini()
, которая будет использоваться для загрузки в файлы ini
.
class load {
protected static $helpers;
protected static $configs;
protected static $libraries;
protected static $processes;
protected static $js;
protected static $css;
public static function init() {
self::$helpers = new stdClass();
self::$libraries = new stdClass();
self::$configs = new stdClass();
self::$processes = new stdClass();
self::$css = new stdClass();
self::$js = new stdClass();
}
public static function config($name) {
if (isset(self::$configs->$name) && is_object(self::$configs->$name))
return self::$configs->$name;
if (is_file(CONFIG_DIR . $name . '.php')) {
require_once(CONFIG_DIR . $name . '.php');
self::$configs->$name = new $name();
return self::$configs->$name;
}
throw new exception('Could not load config file \'' . $name . '\'');
return false;
}
public static function helper($name) {
if (isset(self::$helpers->$name) && is_object(self::$helpers->$name))
return self::$helpers->$name;
if (is_file(APP_HELPER_DIR . $name . '.php')) {
require_once(APP_HELPER_DIR . $name . '.php');
self::$helpers->$name = new $name();
return self::$helpers->$name;
}
if (is_file(HELPER_DIR . $name . '.php')) {
require_once(HELPER_DIR . $name . '.php');
self::$helpers->$name = new $name();
return self::$helpers->$name;
}
throw new exception('Could not load helper file \'' . $name . '\'');
return false;
}
public static function library($name, $params = array()) {
if (empty($params) && isset(self::$libraries->$name) && is_object(self::$libraries->$name))
return self::$libraries->$name;
if (is_file(APP_LIBRARY_DIR . $name . '.php')) {
require_once(APP_LIBRARY_DIR . $name . '.php');
self::$libraries->$name = new $name($params);
return self::$libraries->$name;
}
if (is_file(LIBRARY_DIR . $name . '.php')) {
require_once(LIBRARY_DIR . $name . '.php');
self::$libraries->$name = new $name();
return self::$libraries->$name;
}
throw new exception('Could not load library file \'' . $name . '\'');
return false;
}
public static function process($name, $args = array()) {
if (isset(self::$processes->$name) && is_object(self::$processes->$name))
return self::$processes->$name;
if (is_file(PROCESS_DIR . $name . '.php')) {
require_once(PROCESS_DIR . $name . '.php');
if (empty($args)) {
self::$processes->$name = new $name();
return self::$processes->$name;
} else {
self::$processes->$name = new ReflectionClass($name);
return self::$processes->$name->newInstanceArgs($args);
}
}
throw new exception('Could not load process file \'' . $name . '\'');
return false;
}
public static function css($name) {
if (isset(self::$css->$name) && !empty(self::$css->$name))
return self::$css->$name;
self::$css->$name = '<link rel="stylesheet" type="text/css" href="' . CSS_PATH . $name . '.css">';
return self::$css->$name;
}
public static function js($name) {
if (isset(self::$js->$name))
return self::$js->$name;
self::$js->$name = '<script src="' . JS_PATH . $name . '.js"></script>';
return self::$js->$name;
}
public static function template($name, $vars = array()) {
if (is_file(TEMPLATE_DIR . $name . '.php')) {
ob_start();
if (!empty($vars))
extract($vars);
require(TEMPLATE_DIR . $name . '.php');
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
throw new exception('Could not load template file \'' . $name . '\'');
return false;
}
}