![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 2 Dołączył: 30.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Niedawo się przesiadłem na PHP5 i mam co do tego kilka wątpliwości:
1. W większości skryptów do operowania na zmiennych z klasy są metody setZmienna() getZmienna() - po co to robić skoro można prościej $obiek -> zmienna ? 2. Przy założeniu że jest to potrzebne to zamiast setek metod set() i get() można wyłapywać wszystko w __call() i __set() jednak nie widziałem w klasach takiego rozwiązania. 3. Interfejsy - służa one do czegoś oprócz 'wymuszania' zawarcia danych metod w klasie? Jeśli nie, to do czego one właściwie są, skoro można je oszukać wstawiając puste metody? Lepiej by było gdyby można było w nich zawrzeć jakieś instrukcje, wtedy nie trzeba by było tworzyć klasy w której by było upakowane wszystko a następnie kazać wszystkim innym dziedziczyć po niej. 4. Wyjątki - jest to wygodne, ale czym się one różnią w użyciu od die(); ? Tu i tu jest przerywane działanie skryptu więc teoretycznie mogę stworzyć funkcję exception($line, $file, $message); i używać jej ze stałymi __LINE__ i __FILE__ Jeśli ktoś mógłby rozjaśnić mi to co napisałem to byłbym wdzięczny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował Ziels 27.12.2006, 12:58:05 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Ja to widzę tak:
Cytat 1. W większości skryptów do operowania na zmiennych z klasy są metody setZmienna() getZmienna() - po co to robić skoro można prościej $obiek -> zmienna ? 2. Przy założeniu że jest to potrzebne to zamiast setek metod set() i get() można wyłapywać wszystko w __call() i __set() jednak nie widziałem w klasach takiego rozwiązania. Można i tak i tak - tzn settery i gettery można jednak dodatkowo obudować o wywołania innych funkcji, modyfikowanie wartości. Można też np odmówić dostępu do zmiennej z jakichś przyczyn. Osobiście wolę tradycyjne set i get niż funkcje magiczne - nie mam na razie do nich zaufania (ich działanie jest niekiedy dość tajemnicze). To też kwestia przyzwyczajenia. Cytat 3. Interfejsy - służą one do czegoś oprócz 'wymuszania' zawarcia danych metod w klasie? Jeśli nie to czemu one służą skoro można je oszukać wstawiając puste metody? Lepiej by było gdyby można było w nich zawrzeć jakieś instrukcje, wtedy nie trzeba by było tworzyć klasy w której by było upakowane wszystko a następnie kazać wszystkim innym dziedziczyć po niej. Interfejs wzbogaca klasę o dodatkowy typ. Np.
Obiekt B jest klasą typu B, A oraz executable i chainable. Można to wykorzystać do wymuszania typu obiektu. Osobiście takie interfejsy planuję użyć do konfigurowania obiektów akcji ; p Widzisz więc, że nie chodzi tylko o to, żeby wymusić metody. To co piszesz o upakowywaniu... od tego są klasy bazowe. Popatrz na interfejs Iterator dostępny w php. Wymusz on metody current() key() next() rewind() valid() Widząc, że klasa implementuje taki interfejs wiesz, że takie metody możesz wywołać. Skoro takie metody są zawarte, to klasa może (ale nie musi, bo to zależy od intencji programisty) służyć do przeglądania czegoś. Cytat 4. Wyjątki - jest to wygodne, ale czym się one różnią w użyciu od die(); ? Tu i tu jest przerywane działanie skryptu więc teoretycznie mogę stworzyć funkcję exception($line, $file, $message); i używać jej ze stałymi __LINE__ i __FILE__ Tym się różnią, że wyjątki nie muszą kończyć działania aplikacja jak robi to die(), czy exit(), tylko przerzucają wykonywany skrypt w inne miejsce, w którym możesz zadecydować. Przykład:
Mam nadzieję, że pomogłem. Pozdrawiam. (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) Ten post edytował Cysiaczek 27.12.2006, 13:24:11 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 2 Dołączył: 30.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nic dodać nic ująć, dzięki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 22:10 |