将变量转换为类变量

时间:2010-12-30 20:21:43

标签: php function object

在我的PHP课程中我有

public $a;
public $b;
public $c;
public $d;

我在构造中设置了值。

我现在正在尝试编写一个更新函数,我正在尝试检查它们是否正在更新,比如$ a,与它是一样的。

function update($what, $to) {

     if ($to == $this->what) return false;
     ...
}

$updated = $instance->update($a, "Foobar");
if ($updated) echo "Updated";
else echo "You didn't change the value";

但是因为我知道这一行

         if ($to == $this->what) return false;

无效,我正在寻找一种新的方法来写它。

想法?

提前致谢

3 个答案:

答案 0 :(得分:2)

解决您的困境的方法是变量变量。您的更新功能必须像这样分配:

 $this->{$what} = $to;

if-check将相应地:

 if ($to == $this->{$what}) return false;

并且您实际上无法使用变量$a调用update()方法。你必须给它一个变量名称作为字符串:

 $instance->update("a", "Foobar");

答案 1 :(得分:1)

您可以执行以下操作:

if ($to == $this->$what) return false;

并称之为:

update("a", "Foobar");

这使用变量变量(http://php.net/manual/en/language.variables.variable.php)。


您也可以通过引用传递:

function update(&$what, $to) {
     if ($to == $what) return false;
        ...
}

并像你在你的例子中那样称呼它。

答案 2 :(得分:0)

如果$this->$what

$what = 'a'应该可以解决问题

你通常想避免这样做。