Я новичок в PHP. И я работаю над проектом с этой иерархией каталогов: model
, элементы control
, view
и helper
папки находятся в моей папке проекта
Теперь я пытаюсь написать файл init.php
и require_once
в каждом из файлов control
и model
, вот мой init.php
<?php $current_dir = basename(getcwd()); $model_dir = "model"; $helper_dir = "helper"; function require_helper(){ $handle = opendir("../{$helper_dir}"); while($file = readdir($handle)){ if($file != "." && $file != ".."){ require_once "../{$helper_dir}/{$file}"; } } } if($current_dir == "control"){ $handle = opendir("../{$model_dir}"); while($file = readdir($handle)){ if($file != "." && $file != ".."){ require_once "../{$model_dir}/{$file}"; } } require_helper(); } elseif( $current_dir == "model") { $handle = opendir($current_dir); while($file = readdir($handle)){ if($file != "." && $file != ".."){ require_once "{$file}"; } } require_helper(); } ?>
Но когда я тестирую свой проект, я получаю эту ошибку:
Примечание. Неопределенная переменная: сеанс в C: \ wamp \ www \ harmony \ control \ login.php в строке 11
Вот мой файл login.php
:
<?php require_once "../helper/init.php"; ?> <?php if(isset($_GET["logout"]) && $_GET["logout"] == "true" ){ $session->logout(); } if($session->is_logged_in()){ redirect_to("../view/index.php"); } if(isset($_POST["submit"])){ $username = $db->escape_value($_POST["username"]); $password = $db->escape_value($_POST["password"]); $password = hash('sha1' , $password); $arr = User::auth($username , $password); if($arr){ $usr = $db->instantiate($arr); $session->login($usr); } else { Session::notify("Invalid login information."); } } ?>
из<?php require_once "../helper/init.php"; ?> <?php if(isset($_GET["logout"]) && $_GET["logout"] == "true" ){ $session->logout(); } if($session->is_logged_in()){ redirect_to("../view/index.php"); } if(isset($_POST["submit"])){ $username = $db->escape_value($_POST["username"]); $password = $db->escape_value($_POST["password"]); $password = hash('sha1' , $password); $arr = User::auth($username , $password); if($arr){ $usr = $db->instantiate($arr); $session->login($usr); } else { Session::notify("Invalid login information."); } } ?>
Так вы могли бы мне помочь? что случилось?
Вы пытаетесь получить доступ к $ current_dir, $ model_dir и $ helper_dir внутри функций. Вы не можете обращаться к переменным, которые были объявлены вне функции, если они не объявлены глобальными или фактически не передаются в функцию.
так например:
function require_helper(){ global $helper_dir;//this is key $handle = opendir("../{$helper_dir}"); while($file = readdir($handle)){ if($file != "." && $file != ".."){ require_once "../{$helper_dir}/{$file}"; } } }