首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何“定义”全局变量(唯一性保证)

如何“定义”全局变量(唯一性保证)
EN

Stack Overflow用户
提问于 2014-02-06 22:27:34
回答 3查看 96关注 0票数 0

我的定义是指使用define函数。我想知道的是我能把这个缩短一下吗?

$GLOBALS['MY_VAR']MY_VAR ..。并在任何范围内使用!(不必在函数中使用global $myvar; )。

编辑:示例:print_r(MY_VAR['somekey']);会出错!

编辑:我知道它是一个常量变量,但它不是指向数组的常量指针吗?我认为数组在php中是可变的?

EN

回答 3

Stack Overflow用户

发布于 2014-02-06 22:29:21

试试这个:

代码语言:javascript
运行
复制
define("CONSTANT","anything");

而且您可以在任何范围内的任何地方使用CONSTANT

例子:

代码语言:javascript
运行
复制
define("CONSTANT","123abc321");
function test(){
   return CONSTANT;
}
echo test(); //echoes 123abc321

请注意,不能将数组赋值为常量值。

票数 0
EN

Stack Overflow用户

发布于 2014-02-06 22:33:17

“定义”指的是常数,而不是全局值。常量可以在任何地方使用。下面是您将如何使用它与您给出的例子。

代码语言:javascript
运行
复制
define( 'MY_VAR', $GLOBALS['MY_VAR'] );

更多信息在这里:http://uk1.php.net/define

票数 0
EN

Stack Overflow用户

发布于 2014-02-06 22:50:00

嗯,总是一个常数吗?我想更好的方法是你自己做记号。如果这样做,您可以从任何地方访问令牌,并编辑、读取或更改此令牌中的值。

为了满足您的需要,构建一个令牌类(只需复制并粘贴到名为MyTokenHolder.php的文件中):

代码语言:javascript
运行
复制
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]);
    }
}

现在,您可以设置在令牌中定义的值:

代码语言:javascript
运行
复制
//Set Values
$token = new MyTokenHolder();
$token->Username = 'test';
$token->UserID = 99;
$token->SaveToSession();

你也可以从令牌读取你的值。

代码语言:javascript
运行
复制
//Read Values 
$token = new MyTokenHolder();
echo $token->UserID;
echo $token->Username;

在这里测试自己- SQL:http://ideone.com/jj7r6l

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21615436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档