class Square {
public $result;
public function set_result($a) {
$result= $a * $a;
}
}
Для вывода результата нам необходимо произвести 2 действия:
1. передать в метод set_result() параметр, который запишет результат в свойство result
2. собственно, вывести результат.
$foo= new Square();
$foo->set_result(2);
echo $foo->result;
Или же:
class Square2 {
public function get_result($a) {
return $a * $a;
}
}
И в этом случае:
$bar = new Square2();
echo $bar->get_result(2);
Во втором случае значительно меньше кода. Как в описании класса (отсутсвует свойство result), так и в использовании объекта (мы сразу получаем результат, а не записываем его сначала в свойство). И вроде бы так оно и лучше.
Но вот, нам потребовалось использовать полученный результат еще раз.
При первом варианте всё понятно. Еще раз обращаемся к $foo->result
А что произойдет при использовании вторго варианта? Если второй раз вызываем $bar->get_result(2)
PHP будет повторно вызывать метод объекта $bar и вычислять квадрат? (в этом случае теряется вся актуальность минимизации кода)
Или же он смотрит, что если в объект передается тот же параметр, то он (PHP) не производит повторного вычисления, а выдает раннее вычисленный результат?
Спустя 6 часов, 16 минут, 29 секунд (5.07.2012 - 06:58) Michael написал(а):
Цитата (h.n.81) |
Или же он смотрит, что если в объект передается тот же параметр, то он (PHP) не производит повторного вычисления, а выдает раннее вычисленный результат |
нет.
Твой второй вариант - это просто функция в классе. И работает как обычная функция.
В первом варианте:
1) не вижу у тебя $this->
2) прочти про конструкторы, можно будет написать: $foo= new Square(2);
Спустя 57 минут, 2 секунды (5.07.2012 - 07:55) kamanch написал(а):
Цитата |
1) не вижу у тебя $this-> |
Это опечатка была
Цитата |
2) прочти про конструкторы, можно будет написать: $foo= new Square(2); |
Пример был подобран специально без участия конструктора.
В любом случае, спасибо.
В любом случае, спасибо.