Notice i ich usuniecie...(nie to co myslicie ;))
ErkA - 05-06-2006 00:16
Notice i ich usuniecie...(nie to co myslicie ;))
Witajcie,
Przeszedlem na wyzszy poziom hardkostwa ;), czyli error_reporting E_ALL ;), jednym ze sposobow pozbycia sie notice'a jest sprawdzenie czy zmienna istnieje (isset), jednakze sprawdzanie kazdej zmiennej wydaje mi sie chyba troche dziwne (i nie wiem jakie moze miec wplyw na wydajnosc aplikacji), dlatego zastanawiam sie nad rozwiazaniem, jak inteligentnie pozbyc sie notice'ow (nie chodzi mi o wylaczenie E_ALL), ale to jakis sposob, ich deklarowania. Najczestszym bledem mam Notice: Undefined index: ... , same zmienne rzadzej, ale to wiadomo, mozna zadeklarowac je cut wczesniej, ale czy sensowne jest, aby deklarowac tez pusta tablice z odpowiednimi kluczami (w sumie byloby to wydajniejsze niz sprawdzanie czy istnieje tablica...)?
-- pozdrawiam serdecznie rafi
+++++++++++to++nie++jest++reklama++;)+++++++++++ www.BAZAREK.pl - DARMOWE SKLEPY INTERNETOWE, Otwórz sklep online i zarabiaj-bez opłat, bez prowizji ++++++++++++++++++++++++++++++++++++++++++++++++
orcus - 05-06-2006 00:17
Sun, 04 Jun 2006 11:19:43 +0200, ErkA wrote:
> Przeszedlem na wyzszy poziom hardkostwa ;), czyli error_reporting E_ALL > ;), jednym ze sposobow pozbycia sie notice'a jest sprawdzenie czy zmienna > istnieje (isset),
ja nie sprawdzam _wszysktich_ zmienych. Tylko te ktore pochodza od uzytkownika, bardzo zadko zdarza mi sie sprawdzac zmienne ktore sam tworze. Przemysl jeszcze raz co chcesz robic i jak bo chyba problem lezy w Twoim podejsciu.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
ErkA - 05-06-2006 00:17
orcus napisał(a):
> ja nie sprawdzam _wszysktich_ zmienych. Tylko te ktore pochodza od > uzytkownika, bardzo zadko zdarza mi sie sprawdzac zmienne ktore > sam tworze. Przemysl jeszcze raz co chcesz robic i jak bo chyba > problem lezy w Twoim podejsciu.
zmienne z formularzy etc sprawdzam osobno odpowiednimi funkcjami, ale chcialbym tak pisac kod, aby nie pojawialy sie notice'y, bo chyba one nie pojawiaja sie dlatego, zeby bylo fajniej, ale dlatego, zeby np pisac poprawny kod, moze sie myle, ale jestem wlasnie na etapie, zeby pisac czysty kod, ale tez nie chce zasmiecac go sprawdzaniem czy istnieje dany klucz czy cos... jednym rozwiazaniem, na ktore na razie wpadlem, to jest deklarowanie tablicy na poczatku aplikacji (if !isset()), ale moze jest jeszcze jakis sposob?
-- pozdrawiam serdecznie rafi
+++++++++++to++nie++jest++reklama++;)+++++++++++ www.BAZAREK.pl - DARMOWE SKLEPY INTERNETOWE, Otwórz sklep online i zarabiaj-bez opłat, bez prowizji ++++++++++++++++++++++++++++++++++++++++++++++++
orcus - 05-06-2006 00:17
Sun, 04 Jun 2006 12:53:10 +0200, ErkA wrote:
> orcus napisał(a): > >> ja nie sprawdzam _wszysktich_ zmienych. Tylko te ktore pochodza od >> uzytkownika, bardzo zadko zdarza mi sie sprawdzac zmienne ktore sam >> tworze. Przemysl jeszcze raz co chcesz robic i jak bo chyba problem lezy >> w Twoim podejsciu. > > zmienne z formularzy etc sprawdzam osobno odpowiednimi funkcjami, ale > chcialbym tak pisac kod, aby nie pojawialy sie notice'y, bo chyba one nie > pojawiaja sie dlatego, zeby bylo fajniej, ale dlatego, zeby np pisac > poprawny kod, moze sie myle, ale jestem wlasnie na etapie, zeby pisac > czysty kod, ale tez nie chce zasmiecac go sprawdzaniem czy istnieje dany > klucz czy cos... jednym rozwiazaniem, na ktore na razie wpadlem, to jest > deklarowanie tablicy na poczatku aplikacji (if !isset()), ale moze jest > jeszcze jakis sposob?
zastanow sie kiedy ta tablica sie pojawia i czemu w pewnym miejscu aplikacji jej nie ma. Zastanow sie czy nie mozesz tego rozwiazac w inny sposob.
A te noticy IMHO dotycza glownie przypadkow gdy masz register_globals na on i ktos Ci moze dorzucic cos do strony...
BTW: deklarowanie tablicy NULLi tez jest jakims sposobem ale jakos tak pachnei mi to lataniem dziur w inych miejscach.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
ErkA - 05-06-2006 00:17
orcus napisał(a):
> zastanow sie kiedy ta tablica sie pojawia i czemu w pewnym miejscu > aplikacji jej nie ma. Zastanow sie czy nie mozesz tego rozwiazac w > inny sposob. Tablica "wypelnia" sie danymi po zalogowaniu sie uzytkownika (przypisanie do sesji loginu, id, etc) w miedzyczasie gdy nie jest zalogowany to korzystam z opcji int $this->uid = (int)$_SESSION['auth']['id']; wtedy wiadomo, ze uid bedzie 0 i pojawi sie notice, ze nie ma takiego klucza..
> BTW: deklarowanie tablicy NULLi tez jest jakims sposobem ale jakos > tak pachnei mi to lataniem dziur w inych miejscach. co masz na mysli "latanie dziur w innych miejscach"? W innych miejscach nie bedzie po prostu warunkow if (isset())
-- pozdrawiam serdecznie rafi
+++++++++++to++nie++jest++reklama++;)+++++++++++ www.BAZAREK.pl - DARMOWE SKLEPY INTERNETOWE, Otwórz sklep online i zarabiaj-bez opłat, bez prowizji ++++++++++++++++++++++++++++++++++++++++++++++++
emil - 05-06-2006 00:17
ErkA napisał(a): [...] > co masz na mysli "latanie dziur w innych miejscach"? W innych miejscach > nie bedzie po prostu warunkow if (isset())
Kolega miał zapewne na myśli to, że w dobrze napisanym kodzie nie powinny się zdarzać takie sytuacje. Jesli sięgasz do elementu tablicy albo zmiennej, to powinieneś wiedzieć czego się po takiej operacji spodziewać, a jeśli nie wiesz to pojawia się dziura w programie, która wcześniej czy później wyjdzie powodując bliżej nieokreślone skutki, np. wywali zapytanie do bazy. Pozdrawiam Emil
the_foe - 05-06-2006 00:17
Użytkownik "ErkA" <adres@antyspamowy.pl> napisał w wiadomości news:Xns97D8A1C2A9B77WpiszTuSwojIDToken@217.97.235 .9... > orcus napisał(a): > >> zastanow sie kiedy ta tablica sie pojawia i czemu w pewnym miejscu >> aplikacji jej nie ma. Zastanow sie czy nie mozesz tego rozwiazac w >> inny sposob. > Tablica "wypelnia" sie danymi po zalogowaniu sie uzytkownika > (przypisanie do sesji loginu, id, etc) w miedzyczasie gdy nie jest > zalogowany to korzystam z opcji int > $this->uid = (int)$_SESSION['auth']['id'];
a nie lepiej $this->auth=&$_SESSION['auth']; masz problem z glowy, a zmienne powinny byc sprawdzane przed wpisem do sesji a nie dopiero przy ich pobieraniu.
the_foe - 05-06-2006 00:17
Użytkownik "ErkA" <adres@antyspamowy.pl> napisał w wiadomości news:Xns97D8733E5EF2FWpiszTuSwojIDToken@217.97.235 .9... > Witajcie, > > Przeszedlem na wyzszy poziom hardkostwa ;), czyli error_reporting E_ALL > ;), jednym ze sposobow pozbycia sie notice'a jest sprawdzenie czy > zmienna istnieje (isset), jednakze sprawdzanie kazdej zmiennej wydaje > mi sie chyba troche dziwne (i nie wiem jakie moze miec wplyw na > wydajnosc aplikacji), dlatego zastanawiam sie nad rozwiazaniem, jak > inteligentnie pozbyc sie notice'ow (nie chodzi mi o wylaczenie E_ALL), > ale to jakis sposob, ich deklarowania. Najczestszym bledem mam > Notice: Undefined index: ... , same zmienne rzadzej, ale to wiadomo, > mozna zadeklarowac je cut wczesniej, ale czy sensowne jest, aby > deklarowac tez pusta tablice z odpowiednimi kluczami (w sumie byloby to > wydajniejsze niz sprawdzanie czy istnieje tablica...)? >
Notice nie sa bledami, ale dostosowanie kodu do nich jest pozadane. Na przyklad sprawdzanie czy zmienna zostala ustawiona skraca czas wykonaywania skryptu.
Marcin Wasilewski - 05-06-2006 00:17
Użytkownik "ErkA" <adres@antyspamowy.pl> napisał w wiadomości news:Xns97D8733E5EF2FWpiszTuSwojIDToken@217.97.235 .9... > Witajcie, > > Przeszedlem na wyzszy poziom hardkostwa ;), czyli error_reporting E_ALL > ;), jednym ze sposobow pozbycia sie notice'a jest sprawdzenie czy > zmienna istnieje (isset), jednakze sprawdzanie kazdej zmiennej wydaje > mi sie chyba troche dziwne (i nie wiem jakie moze miec wplyw na > wydajnosc aplikacji), dlatego zastanawiam sie nad rozwiazaniem, jak > inteligentnie pozbyc sie notice'ow (nie chodzi mi o wylaczenie E_ALL),
@$zmienna rozwiązuje problem.
ErkA - 05-06-2006 00:17
the_foe napisał(a):
> a nie lepiej $this->auth=&$_SESSION['auth']; niestety musze odwolywac sie do konkretnego klucza ;).
> masz problem z glowy, a zmienne powinny byc sprawdzane przed > wpisem do sesji a nie dopiero przy ich pobieraniu. Nie chodzi o walidacje zmiennej, chodzi o to, aby ustrzec sie przed pustym kluczem tablicy, ktora tworzona jest po zalogowaniu sie usera, a do tego czasu przyjmuje wartosci puste...
-- pozdrawiam serdecznie rafi
+++++++++++to++nie++jest++reklama++;)+++++++++++ www.BAZAREK.pl - DARMOWE SKLEPY INTERNETOWE, Otwórz sklep online i zarabiaj-bez opłat, bez prowizji ++++++++++++++++++++++++++++++++++++++++++++++++
ErkA - 05-06-2006 00:17
Marcin Wasilewski napisał(a):
> @$zmienna rozwiązuje problem.
:) error_reporting(E_ALL^E_NOTICE) jest prostsze ;), ale dzieki za odpowiedz.
-- pozdrawiam serdecznie rafi
+++++++++++to++nie++jest++reklama++;)+++++++++++ www.BAZAREK.pl - DARMOWE SKLEPY INTERNETOWE, Otwórz sklep online i zarabiaj-bez opłat, bez prowizji ++++++++++++++++++++++++++++++++++++++++++++++++
orcus - 05-06-2006 00:17
Sun, 04 Jun 2006 15:54:06 +0200, ErkA wrote:
> orcus napisał(a): > >> zastanow sie kiedy ta tablica sie pojawia i czemu w pewnym miejscu >> aplikacji jej nie ma. Zastanow sie czy nie mozesz tego rozwiazac w inny >> sposob. > Tablica "wypelnia" sie danymi po zalogowaniu sie uzytkownika (przypisanie > do sesji loginu, id, etc) w miedzyczasie gdy nie jest zalogowany to > korzystam z opcji int > $this->uid = (int)$_SESSION['auth']['id']; wtedy wiadomo, ze uid bedzie 0 > i pojawi sie notice, ze nie ma takiego klucza..
czyli rozumiem ze w momencie gdy uzytkownik jest gosciem tego elementu nie ma... i to jest Twoj problem IMHO. U mnie jest(jego odpowiednik;) i jest liczba oznaczajac guesta(nie wplywa to na ilosc danych w sesji znaczoca bo jest tam tez kilka inych rzeczy).
>> BTW: deklarowanie tablicy NULLi tez jest jakims sposobem ale jakos tak >> pachnei mi to lataniem dziur w inych miejscach.
> co masz na mysli "latanie dziur w innych miejscach"? W innych miejscach > nie bedzie po prostu warunkow if (isset())
nie nie mowie tu o sprawdzaniu czy istnieje. Mowie ze ta tablica powina istniec jesli dochodzi do wykonania kodu w kotrym ja wykorzystujesz. Roznica jest subtelna z pozoru ale jak sie przyjrzec to przepasc.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci ktorzy rozumieja zapis binarny i pozostali :.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Co myslicie o jednorocznych szkolach na grafika
Co myślicie o tym banerku, ocena.
Warsztaty Photoshop - co myslicie?
Co zrobić jak ktoś usunie rekord zeby nie stracic informacji
Co myślicie o tym logo???
MySql5 - Jak wyzerować pole autoincrement po usunięciu rekordów
Co myslicie o tym ...
[Oracle] Problem z usunietym plikiem - pomocy
warunkowe usuniecie rekordu
Temat na prace magisterska. Prosba o rade.
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|