Pomiń nawigację

krajniak.info (rozwiń)

Jak ja to lubię...

Wpis z dnia 26 lipca 2007, 19:05:54 w kategoriach c/c++/c#/php technika

Siedziałem dzisiaj i medytowałem na kawałkiem kodu, który zachowywał się czasami dość dziwnie. Po czym doszedłem do tego, że w PHP takie coś jest jak najbardziej poprawne, nie sypie żadnym runtime errorem:

$p = array('a'=>'ewa','b'=>'celina','c'=>'kozica');
foreach($p as $k)
	echo $k['nieistniejacy'];

To działa, wypisuje eck. Bardzo lubię php, myślałem że szlag mnie trafi, wyjdę z siebie i stanę obok.

Tagi:
Przeczytaj poprzedni wpis Na księżyc.. lub przejdź do następnego Szklana Pułapka 4.0 albo wróć do reszty wpisów

Komentarze do notki 'Jak ja to lubię...'

  1. co w tym dziwnego? $k jest stringiem. zadajac pytanie o $k['casdfasdf'] zadajesz pytanie o $k[0] czyli pierwszy znak ze stringa.

    po co ci w ogole taki kod?

  2. O-LOL.

    @D4: Odpuść sobie, PHP-owy fanboju.

  3. M. Gorny - zaczynam sie zastanawiac, czy w ogole wiesz co ten wyraz oznacza

  4. @D4: Też Cię lubię q ;.

  5. IMO na zdrową logikę tak się nie powinno dziać, powinien być rzucany wyjątek (wykroczenie poza tablicę), a 'cokolwiek' nie powinno być tożsame z 0.

    Jednak dynamiczne typowanie czasem pokazuje dlaczego nie jest zawsze dobre.

  6. @Ktos: W PHP przecież nie ma wyjątków na standardowe funkcje; raczej po prostu powinno nic nie wypisać czy tam innego undefa zwrócić.

  7. Ale według normalnej logiki powinny być (i w wielu innych językach w takiej sytuacji następuje rzucenie wyjątku), skoro już są :-)

  8. @Ktos: Nie nazywaj błędu wyjątkiem ( ;.

  9. @D4: to taki przykład, kod w którym szukałem błędu był trochę większy i w dodatku nie mój, takie kwiatki wyjątkowo utrudniają znalezienie odpowiedzi na pytanie 'dlaczego to się zachowuje tak dziwnie'. A i zadając pytanie o $k['ble'] zadaje pytanie o element tablicy $k o kluczu 'ble' i tyle, nie o żadne [0]. Język działa nielogicznie po prostu. Mogliby już przestać wszystko traktować jako 'string' bo to jest niepoważne.
    @D4,Michał: nie wyzywać mi się tutaj :)
    @Ktos: no właśnie, logika php jest jednak dość dziwaczna, cokolwiek mógłby rzucać, a nie robić taki cyrk na kółkach

  10. Jakub - to fakt, PHP ma od cholery nielogicznosci. Mam taka cicha nadzieje, ze PHP6 bedzie DUZO mniej tolerancyjny dla gownianego kodu PHP3/4/5. Tak jakby PHP5 bylo forma 'przejsciowa' miedzy syfem a porzadnym jezykiem.
    A co do klotni - my tak zawsze :P

  11. A miałeś włączone informowanie o wszystkich błędach? Z tego co wiem to PHP powinien wywalić coś w stylu: "Notice: Undefinied index".
    Swoją drogą.. notice najczęściej są wyłączane..

Dodaj komentarz:

Zastrzegam sobie prawo do usuwania komentarzy nie odnoszących się do treści wpisu.

Przeczytaj poprzedni wpis Na księżyc.. lub przejdź do następnego Szklana Pułapka 4.0 albo wróć do reszty wpisów