![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zastanawiam sie ostatnio, co jest lepszym rozwiazaniem w perspektywie wiekszej aplikacji:
Moim zdaniem pierwsze rozwiazanie jest 'ladniejsze' i duzo bardziej wygodne. No i zaczynaja sie schody:
Ok. pojawia sie magiczne __isset(). Ale:
Kod:
Co o tum uwazacie? Moze macie lepszy sposob? Adrian. |
|
|
![]()
Post
#2
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Swojego czasu pisalem arta na ten temat ->
http://hwao.be/blog/2006/06/18/konfiguracj...przechowywanie/ Cenne sa komentarze inych uzytkownikow |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Klasa konfiguracji to akurat przyklad. Ta sama sytuacja wystepujue chociazby przy pobieraniu danych z widoku czy ich zapisywaniu.
A wiec jakie pomysly? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Cytat // Rozwiazanie 1.$host = $oConfig->system->db->host;// Rozwiazanie 2.$host = $oConfig->get('system', 'db', 'host'); A jaka to jest roznica ![]() Cytat $host = $oConfig->system->jakas_nieistniejaca_zmienna->host;// Zwroci NOTICE informuujace o tym, ze nastepuja odwolanie do nieistniejacego obi ektu - no bo zachowa sie jak: null->host;$host = $oConfig->get('System', 'nieistneijaca_zmienna', 'host');// Zwroci po prostu null bez zadnego bladu. ![]() Cytat Ok. pojawia sie magiczne __isset(). Ale: Z jakiego php korzystasz ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#5
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
@NuLL zastanawiam się w takim razie, w jakim Ty języku programujesz... albo masz braki po prostu w php5.1...
Zeby nie byc golo slownym.
Efekt działania: Kod Bar::foo = string Bar::foo - Istnieje Bar::foo2 - nie istnieje! Bar::foo3 - nie istniejąca właściwość usunięta! Masz tutaj na wortalu komentarz nawet o tym: http://wortal.php.pl/phppl/wortal/artykuly...zestrzenie_nazw Tu masz jeszcze kurs dla poczatkujacych, w ktorym to jest omowione: http://www.gajdaw.pl/php/obiekty-3.html Dla taka nie wiedza w dodatku z takimi slowami Cytat ![]() Jakoś dziwnie brzmia... @Prph: Wg mnie najlepsze jest zastosowanie 2gie, tylko zeby byly tam wyjatki zwracane |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
A co sądzicie o Zend_Config
Przykłady użycia: Wczytywanie konfiguracji w postaci tablicy php Wczytywanie konfiguracji z pliku INI Wczytywanie konfiguracji z pliku XML -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
@NuLL: Zamiast sie nabijac, moze bys podal jakies rozwiazanie. Pokaz jak ty porzadnie programujesz. Hwao: Dzieki za odpowiedz. Tez uwazam drugie rozwiazanie za lepsze i nawet wprowadzielm juz zmiany w kodzie. Troche myslalem nad zwracaniem wyjatku w chwili kiedy atrybut nie istnieje. Ale chyba wartosc null bedzie lepsza, bioroc pod uwage ze w szablonie zrobi np:
Po prostu tego nie wyswietli. bigZbig: Wlasnie na Zend_Config wzorowane jest rozwiazanie 1. Zend_Config chyba nie jest najlepszym rozwizaniem. Pozdrawiam, Adrian. |
|
|
![]()
Post
#8
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Pierwsze rozwiazanie to jest poprostu zapychanie nie potrzebnie (imho) pamieci
![]() Pisanie tego ma maticznych metodach to przerost formy nad trescia, duzo wygodniejsze jest 2 rozwiazanie. Proponowal bym zastanowic sie czy nie warto dodac tez parametr domyslny, jezeli nie ma wartosci to zwraca domyslna wartosc ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Tak, ktos juz mowil o twej wartosci domyslnej.
W tej chwili zwraca null. Jest to calkiem uzasadnione, jezeli uzyjemy rozwiazania w szablonach:
Taki efekt czesto jest pozadany (przynajmniej w moich aplikacjach). Ponadto, gdy zwracane jest null, wygodnie robic:
Adrian. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Cytat @NuLL: Zamiast sie nabijac, moze bys podal jakies rozwiazanie. Pokaz jak ty porzadnie programujesz. A prosze Cie bardzo ![]() Cytat jakby php mialo jakies narzedzie ktore sprawnie pozwala dostawac sie do danych w tablicy jak w obiekcie, to by bylo spoko - niestety chyba takowego nie ma.. Chyba mozna sobie to napisac czy nie ![]() ![]()
3 x FALSE - to wszystko ode mnie. FALSE mozna sobie zmienic na NULL w zaleznosci od potrzeby ![]() Ta klaska tutaj napisan to wstep ;] - powinno byc implements ArrayAccess,Countable,Iterator + plus pare innych etod ale pozostawiam do rozwazenia naszym guru programowania obiektowego ![]() ![]() ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Ok, widze u siebie blada. Zwraca null zamiast false. @NuLL: No nic nowego oprocz tego false nie napisales, wiec kozak taki nie jestes ![]() Pozdrawiam, Adrian. Edit: A jednak to nie dziala. Przedstawiam ponizszy kod i wynik:
Wynik: bool(false) Notice: Trying to get property of non-object in /home/adrian/public_html/p.php on line 38 Notice: Trying to get property of non-object in /home/adrian/public_html/p.php on line 38 Notice: Trying to get property of non-object in /home/adrian/public_html/p.php on line 38 Notice: Trying to get property of non-object in /home/adrian/public_html/p.php on line 38 bool(false) bool(false) No i co? Adrian. Ten post edytował Prph 26.08.2006, 11:25:18 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Yyy, a co ma piernik do wiatraka? Przeciez te blady sa generowane przez get. Jest na to sposob, ale bardzo glupi. Zamiast null zwraca sie new self.
A poza tym, return $this w konstruktorze jakos smiesznie wyglada ![]() ![]() Adrian. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
W sumie troche bubla napisalem - lepiej byloby to tak napisac
I jeszcze mamy ladnie dodane wyjatki ![]() -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
No teraz jest ok, ale jak mam uzywac try, catch, to wole napisac metode get() ze zmienna lista parametrow.
Adrian. |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 18.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Sory za odgrzewanie kotletów ale zastanawiałem się po co i dlaczego wyjątki skoro można tak:
IMO to chyba lepsze rozwiązanie bo nie dostaniemy błędu, nie przerwiemy aplikacji tylko dostaniemy pusty obiekt. Aczkolwiek mogę się mylić i będę wdzięczny za odzew. -------------------- emiker
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Odgrzane to ja jeszcze podgrzeje.
zrobiłbym podobnie jak DjKermit z tym, że zamiast zwracać za każdym razem nowy pusty obiekt, dałbym statyczne pole z pustym obiektem, który bym zwracał. Problem jest jedynie taki, że zamiast null dostajemy ten obiekt. Ten post edytował Hacker 29.03.2007, 18:24:41 -------------------- (\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him... (> <)...on his way to world domination |
|
|
![]()
Post
#18
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 112 Pomógł: 20 Dołączył: 10.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
To ja też do odgrzania się przyczynię.
U siebie stosuję inne rozwiązanie, jeżeli chodzi o przechowywanie zmiennych, zbliżone do drugiego sposobu z pierwszego posta Adriana:
system.db.host tłumaczone jest w funkcjach Get / Set na tablicę:
Jak dla mnie rozwiązanie super wygodne. Nie jestem mastah PHP5 i wszystkich rozwiązań związanych z jego obiektowością, ale czy potrzebne aż takie kombinacje? U mnie działa to prosto: Get pobiera co trzeba a jeżeli na którymś poziomie ścieżki nie ma odpowiedniej wartości (klucza w tablicy) zwraca false. Całe to rozwiązanie stosuję w kilku miejscach, tworząc sobie metody Get i Set w klasach w których ich potrzebuję. Przykładowo:
Chyba że przedstawione przez was rozwiązania mają jakieś dodatkowe plusy, dla mnie w tej chwili niewidoczne. pozdr. |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
a ja się zastanawiam, dlaczego taka obawa przed stosowaniem wyjątków.
Konieczność używania try - catch ? Po co? Przecież w tym przykładzie wyjątek pokazuje ewidentny błąd programisty - odwołanie się do nieistniejącej cechy w konfiguracji. Taki błąd powinien zostać wyłapany od razu, a więc wyjątek z całym trace powinien zostać jak najszybciej wyświetlony. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
jak użyjesz throw i ktoś tego nie wyłapie to też wywali 'na ekran', a również przy nie wyłapaniu zatrzyma resztę skryptu. A poziom blokowania wykonania strony będzie w tym wydaniu z throw lepszy, bo i tak nie wykonasz dalszego kodu który jest zależny, ale reszta nie zależnego przy wyłapaniu będzie działać.
-------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 12:32 |