Разработка потихоньку продолжается. Была добавлена возможность добавления 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). Я считаю этот способ довольно удобным, если есть варианты лучше или вам здесь что-то не понятно — пишите в комментарии, отвечу.