<?phpfunction &get_instance_ref() {
static $obj; echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// 将一个引用赋值给静态变量
$obj = &new stdclass;
}
$obj->property++;
return $obj;
} function &get_instance_noref() {
static $obj; echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// 将一个对象赋值给静态变量
$obj = new stdclass;
}
$obj->property++;
return $obj;
} $obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "\n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?> Static object: NULL
Static object: NULLStatic object: NULL
Static object: object(stdClass)(1) {
["property"]=>
int(1)
}各位帮帮忙 解读一下代码
希望能写上注释结果如何得出的!
为什么会有这样的结果!
谢谢了
static $obj; echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// 将一个引用赋值给静态变量
$obj = &new stdclass;
}
$obj->property++;
return $obj;
} function &get_instance_noref() {
static $obj; echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// 将一个对象赋值给静态变量
$obj = new stdclass;
}
$obj->property++;
return $obj;
} $obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "\n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?> Static object: NULL
Static object: NULLStatic object: NULL
Static object: object(stdClass)(1) {
["property"]=>
int(1)
}各位帮帮忙 解读一下代码
希望能写上注释结果如何得出的!
为什么会有这样的结果!
谢谢了
<?php function &get_instance_ref() {
static $obj; echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// 将一个引用赋值给静态变量
$obj = &new stdclass; //修改通过这个方法返回的变量,将同时改变对象本身
}
$obj->property++; //楼主好像没有吧property属性列出来,并且这个应该放在上面的IF里
return $obj;
} function &get_instance_noref() {
static $obj; echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// 将一个对象赋值给静态变量
$obj = new stdclass; //没有带&
}
$obj->property++;
return $obj; //返回实例,因为生成实例时没有用&符
} //综合感受:楼主的代码(函数)是单独调用的,这样好像不是面向对象中的方式吧。这些函数应该是定义在某个类中的吧
//还有就是代码没有给完整,有的不好看
$obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "\n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?>
不是 我自己写的!晕死了
变量 变量范围
全局和静态变量的引用!
真 服了你了!
由于第一段代码中, new stdclass产生的是一个临时的对象实例,生存周期只在函数内部,所以传址是错误的.
引用 : 你每次都要去那房间才能找到那个女人Function 内的房间是临时的, 用完后就会清拆掉传值 : 女人在你家, 你还是能找到她 (有值)
引用 : 房间拆掉了, 女人不知道跑那去了, 你再也找不到 (NULL)