如何正确使用全局元素

时间:2013-10-10 23:20:44

标签: php

美好的一天。

当我在包含在一个文件中的某些文件中使用globals元素时,我遇到了问题。

构建我可以看到的文件:

文件:

-index.php
--function.php
--globals.php
--lang.php
--allfunction.php

编码您可以看到的所有页面:

代码index.php:

<?
session_start();
require_once("./function.php");

select();

?>

代码function.php:

<?php
require_once("./globals.php");
require_once(dirname(__FILE__)."/lang.php");
include_once Language(3);
require_once(dirname(__FILE__)."/allfunction.php");
?>

代码globals.php:

<?
$dirang = './';
$langfile = 'lang.php';
$test = 'hello';
}
?>

代码lang.php:

<?  
Language($rem){
return $GLOBALS["langfile"]; //ex.
}
?>

代码allfunction.php:

<?  
echo $GLOBALS["test"]; //ex.
}
?>

当我在$GLOBALS["test"]中使用allfunction.php时,我得到了问题。

我收到错误Undefened index test in allfunction.php on line ....

请告诉我为什么我会收到错误以及如何在allfunction.php中使用全局元素?

2 个答案:

答案 0 :(得分:0)

你应该在你使用它们的文件中编写全局变量,例如。如果在allfunction.php中使用全局变量,则必须在此文件中编写全局变量(在其中使用它们) 不要使用带有全局变量的单独文件。

答案 1 :(得分:0)

不要使用全局变量。将变量存储在静态ConfigRegistry类中。另请阅读singleton design pattern

示例:

config.php

<?php
class Config
{
    static $var1 = '...';
    static $var2 = '...';

    public static function init()
    {
        self::$var2 = 1+1; //expressions go here
    }
}
Config::init();

usage.php

<?php
require_once 'config.php';
function x()
{
    $someKindOfSetting = Config::$var1;
}