превращение переменной в переменную класса - PullRequest
0 голосов
/ 30 декабря 2010

В моем классе 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 ]

2 голосов
/ 30 декабря 2010

Решением вашей дилеммы являются переменные переменные.Ваша функция обновления должна назначить ее следующим образом:

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

Проверка if будет соответственно:

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

И вы не можете вызвать метод update () с переменной $a.Вы должны дать ему имя переменной в виде строки:

 $instance->update("a", "Foobar");
1 голос
/ 30 декабря 2010

Вы можете сделать что-то вроде:

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;
        ...
}

И назовите это так, как вы это делали в своем примере.

0 голосов
/ 30 декабря 2010

$this->$what должен сделать трюк, если $what = 'a'

Вы, как правило, хотите этого избежать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...