通过定义我的意思是使用define
函数。
我想知道的是我可以缩短它:
$GLOBALS['MY_VAR']
到MY_VAR
...并在任何范围内使用它! (不必在函数中使用global $myvar;
。)
修改:
示例:print_r(MY_VAR['somekey']);
出错!
修改: 我理解它是一个常量变量,但它不是一个指向数组的常量指针吗?我以为数组在php中是可变的吗?
答案 0 :(得分:0)
试试这个:
define("CONSTANT","anything");
您可以在任何范围内的任何地方使用CONSTANT
。
define("CONSTANT","123abc321");
function test(){
return CONSTANT;
}
echo test(); //echoes 123abc321
请注意,您无法将数组分配给常量值。
答案 1 :(得分:0)
定义是指常量,而不是全局。常量可以在任何地方使用。以下是您使用示例的方法。
define( 'MY_VAR', $GLOBALS['MY_VAR'] );
此处有更多信息:http://uk1.php.net/define
答案 2 :(得分:0)
嗯,它总是不变吗?我想更好的方法是建立自己的令牌。如果您这样做,您可以从任何地方访问您的令牌并编辑,阅读或更改此令牌中的值。
根据您的需要,构建一个令牌类(将其复制并粘贴到名为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();
您还可以从令牌中读取您的值。
//Read Values
$token = new MyTokenHolder();
echo $token->UserID;
echo $token->Username;
在这里测试你的自我 - SQL小提琴:http://ideone.com/jj7r6l