Nie znam się dobrze na tym ale czy apostrofy nie robią też różnicy w działaniu ? Bo jak ja raz napisałem skrypt z odwołaniem do POST bez apostrofów to wyskoczył mi błąd
Nie wiem czy apostrofy to konwencja, elegancja czy moze cos wymaganego co roznie dziala na roznych konfiguracjach serwera. Jednak wszyscy gonia do ich uzywania wiec lepiej sobie zlych nawykow nie wyrabiac. Jesli na jakims problemie maja pojawic sie problemy po nie ma ' to lepiej dodac je od razu wtedy przy przenosinach nie ma przykrych niespodzianek
A teraz idziemy do manuala i sie juz wiecej nie zastanawiamy czy to tradycja, wymysl chorych ludzi czy może blad:
Co wolno, a czego nie w tablicach?
Dlaczego zapis $foo[bar] jest niepoprawny?
W starych skryptach można spotkać taką składnię:
$foo[bar] = 'coś';
echo $foo[bar];
// itd.
Ten zapis jest niepoprawny, ale działa. Dlaczego zatem jest niepoprawny? Powód jest to, co opisano w rozdziale składnia, że pomiędzy nawiasami kwadratowymi ('[' i ']') musi znajdować się wyrażenie. Oznacza to, że można używać czegoś takiego:
echo $arr[ foo(true) ];
Jest to przykład użycia wartości zwracanej przez funkcję jako indeksu tablicy. php zna też stałe, więc można spotkać zastosowanie E_*.
$opis_błędu[E_ERROR] = "Wystąpił poważny błąd";
$opis_błędu[E_WARNING] = "php wysłało ostrzeżenie";
$opis_błędu[E_NOTICE] = "To jest tylko nieformalna uwaga";
Proszę pamiętać, że E_ERROR jest także ważnym identyfikatorem, tak jak bar w pierwszym przykładzie. Ale ostatni przykład znaczy to samo co:
$opis_błędu[1] = "Wystąpił poważny błąd";
$opis_błędu[2] = "php wysłało ostrzeżenie";
$opis_błędu[8] = "To jest tylko nieformalna uwaga";
ponieważ E_ERROR znaczy to samo co 1, itd.
W takiem razie, jak to możliwe, że $foo[bar] działa? To działa, ponieważ bar, zgodnie z jego zapisem powinien być stałą. Jednakże w tym przypadku nie instnieje stała o nazwie bar. php teraz zakłada, że masz na myśli bar literalnie, czyli jako łańucuch "bar", tylko że zapomniałeś napisać cudzysłowów.
Więc dlaczego tak jest źle?
Kiedyś w przyszłości grupa php może chcieć dodać jeszcze jedną stałą lub słowo kluczowe i wtedy będziesz miał kłopot. Dla przykładu, obecnie już nie można używać słów empty i default, gdyż są to specjalne słowa kluczowe.
Poza tym, jeśli dotąd argumenty nie przekonują cię: ta składnia jest po prostu odrzucona i kiedyś może przestać działać.
Notatka: Po przełączeniu error_reporting na E_ALL, zobaczysz, że php generuje ostrzeżenie, kiedy tylko powyższa składnia zostanie użyta. Tak samo generowane będą ostrzeżenia odnośnie innych odrzuconych "udogodnień". (umieść w swoim skrypcie linię error_reporting(E_ALL)
