php 解释,php – 不同的解释

不知道为什么这是它的工作方式,但是,如果你删除&在$this前面将它分配给你的全局变量时,它会起作用.

为了说明这一点,以下部分代码:

$global_obj = null;

class my_class

{

public $my_value;

public function __construct()

{

global $global_obj;

$global_obj = $this;

}

}

$a = new my_class;

$a->my_value = 5;

$global_obj->my_value = 10;

echo $a->my_value;

给出以下输出:

10

以下是与您的代码的差异:

>我删除&在$this之前:使用PHP 5时,在处理对象时不需要这样做

>我将代码翻译成真正的PHP 5:

> __构建constructor

>使用public / protected / private,而不是properties的var

作为旁注,您发布的代码应该给您以下警告:

Strict standards: Creating default object from empty value

备注:

>我使用的是PHP 5.3.2

> E_ALL不包含E_STRICT(source)

经过多次搜索后编辑:

If you assign a reference to a

variable declared global inside a

function, the reference will be

visible only inside the function.

You

can avoid this by using the $GLOBALS

array.

并且有一个例子.

尝试在代码中使用$GLOBALS,我有这部分代码:

$global_obj = null;

class my_class

{

public $my_value;

public function __construct()

{

$GLOBALS['global_obj'] = & $this;

}

}

$a = new my_class;

$a->my_value = 5;

$global_obj->my_value = 10;

echo $a->my_value;

我得到以下输出:

10

这似乎工作;-)

如果我用这样替换__construct方法:

public function __construct()

{

global $global_obj;

$global_obj = & $this;

}

它不起作用……

所以看来你不应该使用global,这里是$GLOBALS.

手册中给出的解释是:

Think about global $var; as a

shortcut to $var =&

$GLOBALS['var'];.

Thus assigning

another reference to $var only

changes the local variable’s

reference.

并且,就这样说:使用全局变量通常不是一个好主意 – 而且,在这种特定情况下,感觉这是一个非常糟糕的主意……

(现在,如果这个问题只是为了理解为什么……好吧,我能理解你的好奇心;-))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值