Oto On (dla niewtajemniczonych - to woreczek na magnezję, substancję mającą na celu zapobieganie pocenia się rąk podczas wspinaczki): 

Prawda, że piękny? :) Jakby się komuś spodobał, to polecam oloiolo'a.
Pisząc dzisiaj klasę, która będzie modelem w nowej wersji mojego frameworka, natrafiłem na problem, z którym jakoś nigdy wcześniej nie miałem doczynienia. Wynika to z tego, że pisząc zwykły proceduralny kod zazwyczaj wiemy jakie zapytanie zostało wykonane i nie mamy problemu, czy na wyniku można wykonać mysql_num_rows(), lub inną funkcję odpowiednią dla zapytań z insert, czy też nie. Kiedy jednak zaczynami pisać kod zorientowany obiektowo nie jest już tak fajnie i trzeba (przynajmniej w moim przypadku) napisać bardziej wyspecjalizowaną klasę zawierającą metody odpowiednie do typu zapytania.
Funkcja mysql_query() zwraca dwa typy. Dla zapytań select, show, describe i explain zwraca zmienną typu resource, a dla innych zapytań zwraca boolean.
Tak więc jedyne co musimy zrobić, to sprawdzić typ zmiennej. Służy do tego funkcja gettype(). Oto prosty kod metody zwracającej bardziej wyspecjalizowaną klasę w zależności od typu zapytania:
(...)public function getInstance($result){if (gettype($result) == 'resource')return new DBQueryResource($result);elsereturn new DBQueryBoolean($result);//Jak ktoś ma lepszy pomysł na nazwy klas, to niech mów :P.}
To oczywiście bardzo prosty problem, ale ja musiałem poświęcić kilka minut na zastanowienie się, więc chcę już tego innym zaoszczędzić ;].