繁体   English   中英

把变量变成类变量

[英]turning variable into class variable

在我的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;

是无效的,我正在寻找一种新的编写方式。

有想法吗?

提前致谢

解决难题的方法是变量变量。 您的更新功能必须按以下方式分配它:

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

if-check将相应地:

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

而且,您实际上不能使用变量$a调用update()方法。 您必须给它一个变量名作为字符串:

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

您可以执行以下操作:

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

并这样称呼它:

update("a", "Foobar");

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


您也可以通过引用传递:

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

并像在示例中一样进行调用。

$this->$what应该可以解决问题,如果$what = 'a'

您通常希望避免这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM