![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
W tytule tematu napisałem "dyskusja". Dziś nie przychodzę na forum z pyaniem, ale z prośbą o wyrązenie swoich opinii na możliwości jakie daje nam OOP.
Przypuśćmy, że mamy do napisania klasę, która będzie importować dane w formie tablicy i je udostępniać (rzucam przykładem, aby zobrazowac jakie możliwości daje OOP). Przypadek nr 1:
Użycie przypadka 1:
Plusy:
Przykład uzycia sposobu nr 2:
Dzięki interfejsowi ArrayAcess otrzymujemy dostęp do danych obiektu jak do zwykłej tablicy, dlatego... Plusy:
http://framework.vgroup.pl/expose-9a722aa0...965ef22bc4d.htm Przykład drugi ma dobrego plusa: można użyć go jako normalnej tablicy, poslugując się chociażby for(), foreach(), count() itd. Natomiast zastanawia mnie jeszcze jedna rzecz, a mianowicie połączenie tych dwóch sposobów dostępu do danych... wyszłaby ciekawa mieszanka, wartoby było spróbować. Kwestię opinii pozostawiam Wam, być może nie dostrzegłem kolejnych plusów i minusów obu sposobów, być może niektóre z przedstawionych są błędne, zapraszam do dyskusji ![]() Pozdrawiam, Athlan ![]() Ten post edytował Athlan 25.01.2007, 15:55:36 -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
wow nie wiedzialem ze jest interfejs (chyba o to ci chodzilo piszac iterator) ArrayAccess. W 1. przykladzie mozesz wlasnie zrobic tak aby klasa implementowala interfejs Iterator, dzieki czemu bedziesz mogl ja wykorzystywac w instrukcjach foreach.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 26.08.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
-------------------- urzenia.net
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wszystko wydaje się piękne, ale w przypadku iteratora, spróbuj:
gdzie "pierwszy" już nie istnieje. php wywali błędy pomimo zastosowania isset (przynajmniej tak było, jak ja o tym pisałem). Ogólnie nie przepadam za tymi interfejsami. Podoba mi się natomiast rozwiązanie typu:
Jeżeli myle się co do 1. rozwiązania - proszę mnie wyprowadzić z błędu ![]() Adrian. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Nie mylisz sie
![]()
Tak powinno wygladac sprawdzanie czy cos jest. Pisanie klas kolekcyjnych bez metod typu has czy contains jest bledem poprostu. Pozatym kolega Athlan powinien sie dowiedziec co to Iterator zamiast rozwazac rozne rozwiazania ze tak powiem ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]() ![]()
Post
#6
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
@NuLL, czym jest Iterator oczywiście wiem
![]() ![]() ![]() @Prph: do przykładu numer 1:
zwóciło NULL... ![]() Idę sobie do szkoły a tu: ![]()
Dostęp:
Tak tylko eksperymentuje, narazie nie wkładam w to wiele wagi, nie używam w projektach... stworzyłem na swoim poligonie śmieciatych, czasem przydatnych skryptów ![]() Co to tym myślicie? ![]() ![]() Pozdrawiam, Athlan ![]() -- EDIT --- Aaaaaa, @Prph, chodzi Ci o isset(), czy zmienna została zadeklarowana. W prypadku, który Ci podałem wynika że zwracamy NULL, co nie jest poprawne. Zgadzam się z Tobą i @NuLL'em, metoda has() jest jak najbardziej potrzebna... można ją owszem dodać do obu klas, jednak interesuje mnie sam dostęp do danych, wykonywanie operacji... Ten post edytował Athlan 25.01.2007, 16:30:05 -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 31.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Athlan, Iterator != Interfejs
![]() PS. Co do przykładu użycia Iteratora - zerkinij do mojej klasy php SimpleDB (wysłanej na konkurs). Zastosowałem w niej i Iterator, i ArrayAccess, i zwykłą obiektową metodę dostępu do danych. -------------------- Przyjazne użytkownikom polskie wsparcie phpBB3 - phpBB3.PL
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Athlan, Iterator != Interfejs Wiem ![]() Na wstępie chciałbym powitać wszystkich forumowiczów, po długim okresie nieobecności z powodu bana ![]() ![]() Temat aktualny, większość problemów rozwiązanych poprzez użycie metody magicznej __isset(), więc po co has() ? Kod klasy (prototyp, przyklad):
Uzycie:
Problem w linii: unset($oMyConfig->field3->fieldarray2->fieldarray3->fieldarray4); tak samo przy dostępie w ArrayAccess... dlaczego? Usówamy obiekt pochodny z tablicy stworzony przez __get(), a nie element tablicy. Póki co nie mam pojęcia jak to wykonać. Jeżeli macie jakieś pomysły to śmiało ![]() Pozdrawiam, Athlan ![]() -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem nie twórz za każdym getem nowych obiektów przechowuj zagnieżdżenia w tabeli
wystarczy wtedy sprawdzanie w __set i konstruktorze i tam tworzenie obiektów -------------------- (\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him... (> <)...on his way to world domination |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 06:32 |