Jak ja to lubię...
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.
Komentarze do notki 'Jak ja to lubię...'
Dodaj komentarz:
Zastrzegam sobie prawo do usuwania komentarzy nie odnoszących się do treści wpisu.
co w tym dziwnego? $k jest stringiem. zadajac pytanie o $k['casdfasdf'] zadajesz pytanie o $k[0] czyli pierwszy znak ze stringa.
26 lipca 2007 19:26:06po co ci w ogole taki kod?
O-LOL.
26 lipca 2007 19:28:07@D4: Odpuść sobie, PHP-owy fanboju.
M. Gorny - zaczynam sie zastanawiac, czy w ogole wiesz co ten wyraz oznacza
26 lipca 2007 19:28:47@D4: Też Cię lubię q ;.
26 lipca 2007 19:30:20IMO 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.
26 lipca 2007 19:55:25Jednak dynamiczne typowanie czasem pokazuje dlaczego nie jest zawsze dobre.
@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ć.
26 lipca 2007 19:58:21Ale według normalnej logiki powinny być (i w wielu innych językach w takiej sytuacji następuje rzucenie wyjątku), skoro już są :-)
26 lipca 2007 19:59:36@Ktos: Nie nazywaj błędu wyjątkiem ( ;.
26 lipca 2007 20:02:14@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.
27 lipca 2007 22:09:09@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
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.
27 lipca 2007 22:10:40A co do klotni - my tak zawsze :P
A miałeś włączone informowanie o wszystkich błędach? Z tego co wiem to PHP powinien wywalić coś w stylu: "Notice: Undefinied index".
29 lipca 2007 03:48:35Swoją drogą.. notice najczęściej są wyłączane..