Я пытаюсь применить какую-то модульную систему в моей сети, используя get и include, вот мой код
на моем index.php
$section = 'user';
if(isset($_GET) && !empty($_GET) && $_GET !== ''){
$module = $_GET['module'].".php";
load_module($section, $module);
}
функция load_module
function load_module($section="", $module=""){
include(SITE_ROOT.DS.$section.DS.'modules'.DS.$module);
}
* я уже определил DS как DIRECTORY_SEPARATOR
и я сохранил несколько файлов в папке модулей, файл загружается отлично, моя проблема в том, что все переменные, которые я объявил на моей включенной странице, не загружаются, вот мой код на одном из включенных файлов
if($session->is_logged_in()){
$user = User::find_by_id($session->user_id);
$profile = $user->profile();
$company = $user->compro();
$logo = $user->logo();
}else{redirect_to('index.php');}
на моем index.php я получил эту ошибку
Notice: Undefined variable: session in C:\www\starpro\user\modules\edit_company.php on line 3 Fatal error: Call to a member function is_logged_in() on a non-object in C:\www\starpro\user\modules\edit_company.php on line 3
и если я перемещу эти переменные в моем index.php, я получу это сообщение
Notice: Undefined variable: company in C:\www\starpro\user\modules\edit_company.php on line 181 Notice: Trying to get property of non-object in C:\www\starpro\user\modules\edit_company.php on line 181
пожалуйста, помогите мне, заранее спасибо
Привет
=============================================== =======================
Я использую ответ Дечезе
и измените класс моего пользователя, добавив статическую функцию, подобную этой
public static function load_module($section="", $module="", $user_id=""){
$user = self::find_by_id($user_id);
$profile = $user->profile();
$company = $user->compro();
$logo = $user->logo();
include(SITE_ROOT.DS.$section.DS.'modules'.DS.$module);
}
и затем в моем индексе я использую это
if(isset($_GET) && !empty($_GET) && $_GET !== ''){
$module = $_GET['module'].".php";
User::load_module($section, $module, $user->id);
}else{
У меня все получилось, но разве это плохая практика?
нужно посоветовать
большое спасибо