由定义我是指使用define
函数。我想知道的是我可以缩短以下内容:
$GLOBALS['MY_VAR']
to MY_VAR
...并在任何范围内使用它!(不必在功能中使用global $myvar;
)。
编辑:示例:print_r(MY_VAR['somekey']);
给出错误!
编辑:我知道它是一个恒定的变量,但这不是一个不断的指向数组的指针吗?我以为数组在PHP中是可变的?
定义是指常数而不是全局。常数可以在任何地方使用。以下是您给出的示例的方式。
define( 'MY_VAR', $GLOBALS['MY_VAR'] );
更多信息在这里:http://uk1.php.net/define
hm,它总是一个常数吗?我想更好的方法是您建立自己的令牌。如果这样做,则可以从令牌的任何地方访问并编辑,读取或更改此令牌中的值。
为您需要,构建一个令牌类(只是复制并将其粘贴到名为myTokenholder.php 的文件):
class MyTokenHolder
{
protected static $_sessionkey = "BE SURE TO OVERRIDE THIS KEY";
//Define your values here
public $Username;
public $UserID;
public function __construct()
{
if(isset($_SESSION[self::$_sessionkey]))
{
$token = unserialize(base64_decode($_SESSION[self::$_sessionkey]));
//see above public params
$this->Username = $token->Username;
$this->UserID = (int)$token->UserID;
}
}
public function SaveToSession()
{
$_SESSION[self::$_sessionkey] = base64_encode(serialize($this));
}
public static function DestroySession()
{
unset($_SESSION[self::$_sessionkey]);
}
}
现在,您可以设置在令牌中定义的值:
//Set Values
$token = new MyTokenHolder();
$token->Username = 'test';
$token->UserID = 99;
$token->SaveToSession();
,您也可以从token读取您的值。
//Read Values
$token = new MyTokenHolder();
echo $token->UserID;
echo $token->Username;
在这里测试自己-SQL小提琴:http://ideone.com/jj7r6l
尝试以下:
define("CONSTANT","anything");
您可以在任何范围中的任何地方使用CONSTANT
。
示例:
define("CONSTANT","123abc321");
function test(){
return CONSTANT;
}
echo test(); //echoes 123abc321
但是
请注意,您不能将数组分配给常数值。