如何使变量可用于其他包含文件

时间:2013-12-04 08:22:51

标签: php variables handler scope

我正在将所有的http请求重定向到index.php,router.php和其他配置文件正在被index.php调用,我有一个路由器,如果文件存在,它将寻找处理程序,但我不知道我是如何访问我的控制器中的处理程序变量。

这是我的index.php,将包含所有配置文件,如数据库和网站设置

的index.php

require_once ('include/config.inc.php');
require_once ('include/mysql.inc.php');
require_once ('include/shared_function.inc.php');
require_once ('include/router.inc.php');

这是我的路由器,如果存在,将检查处理程序。

router.php

front_controller(){

    if(file_exists('handlers/login-handler.php')){
        include_once('handlers/login-handler.php');
    }

    include_once( 'login.php' );
}
front_controller(); 

这是我处理请求的文件,通常我会保留一系列错误以表格形式显示

处理程序/登录-handler.php

//initialise variable to keep error
$errors=array();

if(request==post){
...
//validate post data
...
}
在调用处理程序之后

,这是我的控制器,它将显示表单或结果。

的login.php

//here comes the error , undefined variable
print_r($errors);

请建议我克服这个问题的好方法......

2 个答案:

答案 0 :(得分:2)

如何使用公共“add_error”和“get_errors”方法创建一个抽象的Error类?只要将类导入到您的代码中,您就可以自由访问它。它可能会像:

abstract class Error_handler
{
private static $ERRORS=array();
public static function add_error($error) {self::$ERRORS[]=$error;}
public static function &get_errors() {return self::$ERRORS;}
}

错误将包含在静态$ ERRORS数组中,并且永远不会与代码中的任何其他名称冲突。

答案 1 :(得分:1)

在打印变量之前使用以下代码。

 global $errors;