Cookie CMS. Идёт разработка...
1 минут
Разработка потихоньку продолжается. Была добавлена возможность добавления php страниц модулями и модифицировано добавление функций через модули, реализация этого выглядит следующим образом:
Код запуска страницы:
$modules = array();
$modules_functions = array();
$modules_pages = array();
Код загрузки модуля:
load_engine_module("authorization");
Код добавления новых страниц и функций:
$module_functions = array (
"authorization" => array("sidebar")
);
$module_pages = array(
"authorization" => array("register","login","userpanel","logout")
);
Код функции загрузки модуля:
function load_engine_module( $modulename )
{
include "modules/" . $modulename . "/index.php";
global $modules,$modules_functions,$modules_pages;
$modules[] = $modulename;
$modules_functions = array_merge($modules_functions, $module_functions);
$modules_pages = array_merge($modules_pages, $module_pages);
}
Код для подключения страницы:
// check pages in modules
global $modules_pages,$modules;
for( $i=0 ; $i < array_count_two_level($modules_pages) ; $i++ )
{
for( $j=0 ; $j < count($modules) ; $j++ )
{
if($modules_pages[ $modules[$j] ][$i] == $page_name)
{
include "modules/".$modules[$j]."/pages/".$page_name.".php";
return;
}
}
}
//
Запуск функций модулей выглядит следующим образом:
function load_modules_function( $functionname )
{
global $modules_functions,$modules;
for( $i=0 ; $i < array_count_two_level($modules_functions) ; $i++ )
{
for( $j=0 ; $j < count($modules) ; $j++ )
{
if($modules_functions[ $modules[$j] ][$i] == $functionname)
{
eval($modules[$j]."_$functionname();");
}
}
}
}
Как видно из кода, название функций и страниц сохраняется в массивы, а потом идёт работа с этими элементами. Уже почти готов модуль авторизации, работающий на этом принципе(используемая БД - MySQL). Я считаю этот способ довольно удобным, если есть варианты лучше или вам здесь что-то не понятно - пишите в комментарии, отвечу.