Jest oto taki problem: mamy w bazie danych dwa pola, które trzeba pomnożyć i pokazać wynik na stronie. I teraz jak to zrobić, bo sposoby są co najmniej 3.
Można obliczać po stronie bazy danych
select pole1 * pole2 as wynik from tabela;
i wynik zapytania przekazać do tablicy w metodzie compile() naszej klasy
możliwość druga
to przekazujemy wartości pół z zapytania do funkcji compile() i dokonujemy operacji w tej klasie, w wyniku tego otrzymujemy tablicę z dodatkowym polem myArray['wynik']. i tu przy okazji pytanie jak to robić, bo zapis taki:
while ($objDane->next()) { $arDane[] = array ( 'id' => $objDane->id, 'pole' => $objDane->width * $objDane->height ); }
nie zadziała. Ja robię to tak, że tworzę dodatkową metodę:
private function calculate($o) { return $o->width * $o->height }
i zamiast
'pole' => $objDane->width * $objDane->heightpiszę
'pole' => $this->calculate($objDane)
ale nie wiem, czy to jest słuszne postępowanie, bo trzeba przy większej ilości operacji nagenerować tych metod trochę....
no i wreszcie trzeci sposób:
select pól z bazy ---> przekazanie tablicy do metody compile() ---> przekazanie tablicy z wartością pól do templejtu i teraz dopiero mając w templejcie te pola zabieram się za ich mnożenie i ewentualne formatowanie.
<?php echo $this->pole1 * $this->pole2; ?>
No i teraz która metoda jest "najpoprawniejsza", a która "najwydajniejsza".
Podzielcie się proszę własnymi doświadczeniami / przemyśleniami.
Pozdrawiam noworocznie i przepraszam za przydługawe wywnętrznienia.
Andrzej