[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП что эффективнее метод или свойство?
kamanch
Для примера, вычисляем квадрат числа и выводим его.

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->
Это опечатка была smile.gif
Цитата
2) прочти про конструкторы, можно будет написать: $foo= new Square(2);
Пример был подобран специально без участия конструктора.

В любом случае, спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.