Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[sql|php] Obiektowa pułapka.
Nakładek obiektowych na relacyjną bazę danych jest coraz więcej - aktualnie jednymi z bardziej popularnych są te oparte na wzorcu Active Record. Niewątpliwie ułatwiają one prace programiście i sprawiają, iż kod staje się czytelniejszy i lżejszy… mogą wprowadzać jednak pewne zagrożenie.
Mniej doświadczeni (lub po prostu przeciążeni) programiści mogą zapomnieć, iż ostatecznie i tak zostanie wykonane zapytanie SQL mimo, iż samo wywołanie metody wygląda tak niewinnie:
-
$model->fetchAll(); // Pobierz wszystkie rekordy
Niby oczywiste, prawda? A jednak spotkałem się już kilkukrotnie z kodem, który świadczy o nieuwadze (miejmy nadzieje, że to nie było spowodowane niewiedzą) ze strony programisty. Wśród nich:
-
// Kod miał zwracać liczbę stron przy wyświetlaniu listy
oraz:
-
// Kod pobierał listę rekordów na podstawie podanej listy id
-
foreach($ids as $id) {
-
$result[] = $model->fetchOne($id); // Pobierz rekord na podstawie $id
-
}
Powiedziałbym, że powyższe metody mimo, iż obiektowo poprawne są delikatnie mówiąc “trochę” nieoptymalne.
Uwaga: w podawanych wyżej przykładach zmienna $model jest obiektem klasy Zend_Db_Table w systemie Zend_Framework.
Napisz komentarz