对函数的参数使用相同的变量名称及其返回值*

时间:2011-09-12 03:40:23

标签: php

public function bind($query, $input_param, $btypes)
{
    // $input_param = $this->ref_arr($input_param);  // this self assignment gives an error!
    $input_ref = $this->ref_arr($input_param);       // this works 
}

我通过反复试验了解到这一点......但我想弄明白为什么?

我没有机会形成更多测试用例,但如果我在函数的输入中使用$input_param,则无法将结果返回给$input_param。一旦我将名称更改为其他内容,在这种情况下$input_ref就可以了。

2 个答案:

答案 0 :(得分:2)

$this关键字引用您当前的对象。

因此,如果您使用的代码类似于以下类:

class foo {
   public function __construct() {
      $this->bar = 'that'; // works because $this references the foo object
   }
}

应该有效。但是,如果您在对象之外,则$this将无效,因为$this没有对象可供参考。

class foo {
   public function __construct() {

   }
}
$this->bar = 'that'; // will not work because you are not inside of any object

答案 1 :(得分:0)

我没有时间重现这个...只需更改变量名即可解决问题。