![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 24.08.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam
Podczas testów i zabawy z PDO trafiłem na bardzo ciekawą i użyteczną funkcję: PDO::FETCH_CLASS ( np. $stmt -> setFetchMode(PDO::FETCH_CLASS, 'myDAO'); ) która potrafi przerzucać wynik zapytania – każdy wiersz, do wybranej klasy ( w tym przypadku 'myDAO'). Pytanie: czy istnieje możliwość, jakaś "magiczna metoda", która zadeklaruję zmienną w klasie z wybranym zakresem widoczności (public, protected, private) ? Coś jak __set tylko z możliwością wybrania jaka ma być to zmienna ? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem problemu.
Chcesz mieć określony zasięg zmiennych to dajesz private/protected/public przed każdą właściwością/polem. Potem deklarujesz __set, które zapisuje konkretne kolumny do konkretnych pól i to wszystko. Jeśli chcesz stworzyć jedną klasę która zbiera dane ze wszystkich zapytań to odpuść sobie, będzie to mniej wydajne od użycia tablic. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 24.08.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Szukam sposobu na stworzenie obiektu na podstawie wzoru - mapy, bez konieczności deklaracji zmiennych. PDO wypełniałoby określona klasę zmiennymi a abstrakt po jakim dziedziczyłaby dana klasa załatwiałby sprawę bardziej zaawansowanych metod obiektu -> save(), update(), itd.
Jak rozumiem, wydajność takiego rozwiązania nie jest zadowalająca ? Gdzie jest wąskie gardło ? I tak na marginesie. Dla klasy która nie ma metody __set zadeklarowanej, ale za to ma zadeklarowane pola jak również ich zasięg widoczności PDO wypełni je! Wynik zapytania który nie znajdzie odzwierciedlenia w zadeklarowanych polach zostanie dodany do obiektu jako zmienna publiczna. Tak więc chodzi o to, aby pola były tworzone z automatu, ale z uwzględnieniem zasięgu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 02:27 |