Przekopałem się przez jakiś kod i znalazłem kilka telefonów mySQL_fetch_array
. Czy w nazwach funkcji w PHP rozróżniana jest wielkość liter? Pamiętam, że gdzieś to czytałem, ale nie mogę znaleźć żadnego odniesienia do tego.
php
function
case-sensitive
Ben Dauphinee
źródło
źródło
Odpowiedzi:
Cytuję z tego :
Wygląda więc na to, że w funkcjach zdefiniowanych przez użytkownika nie jest rozróżniana wielkość liter. Głosowano za tym, aby w funkcjach / obiektach PHP5 rozróżniać wielkość liter.
źródło
Nie.
Funkcje PHP nie uwzględniają wielkości liter.
źródło
TL; DR: w nazwach klas wielkość liter nie jest rozróżniana, ale zawsze używaj tej samej wielkości, co w deklaracji (tak samo jak w przypadku funkcji). Ponadto tworzenie instancji klas z różnymi wielkościami liter, tak jak zostały zdefiniowane, może powodować problemy z autoloaderami.
W nazwach klas wielkość liter nie jest rozróżniana:
To daje:
Problem polega na używaniu autoloaderów i systemów plików z rozróżnianiem wielkości liter (takich jak ext2 / 3/4), w którym musisz wywołać nazwę klasy w tym samym przypadku, gdy nazwany jest plik zawierający klasę (a nie jak nazwa klasy jest faktycznie pisana wielkością liter), lub użyj
strtolower
:Plik klasy:
Funkcja autoloadera (
__autoload
lub funkcja do rejestracjispl_autoload_register
)Teraz z tym kodem:
Możesz sprawić, że to zadziała (tj. Efektywnie nie rozróżniając wielkości liter w nazwach klas za pomocą autoloadera), jeśli dodałeś wywołanie do
strtolower()
w kodzie autoloadera, ale tak jak w przypadku funkcji, lepiej jest odwoływać się do klasy w ten sam sposób, w jaki jest zadeklarowana, mieć nazwę pliku z taką samą wielkością jak nazwa klasy, używać autoloaderów i zapomnieć o używaniustrtolower
i lubianych.źródło
Nie, wielkość liter nie jest rozróżniana, jednak dla zachowania spójności należy zawsze używać wielkości liter podanych w instrukcji.
Jednak zmienne są małe litery.
źródło
W PHP zmienne rozróżniają wielkość liter, ale funkcje nie mają takiego problemu. Możesz użyć następujących instrukcji do wyświetlania danych wyjściowych, wszystkie pokażą ten sam wynik.
Z drugiej strony, jeśli zmienisz wrażliwość zmiennych na wielkość liter, to pokaże błąd.
Przykład:
Wynik:
źródło
W nazwach metod również wielkość liter nie jest rozróżniana. na przykład:-
wynik:
źródło
Podsumowując odpowiedź wszystkich. Mimo że PHP nie wymaga spójności wielkości liter we wszystkich wystąpieniach, nawet do tej pory w PHP5.
Najlepsza praktyka będzie
Nigdy nie wiesz, że może któregoś dnia głosowanie się zakończy i uratujesz cały koszmar zmieniających się przypadków w twoich aplikacjach wykonanych kilka lat temu, które wymagają aktualizacji w PHP.
Mam nadzieję, że i tak pomoże.
źródło
Może to już za późno, ale ...
Każdy już tu wiedział: silnik PHP nie dba o wielkość liter.
I jest głosowanie na bugtrackerze PHP, gdzie większość mówi: „Tak, jestem zwolennikiem rozpoznawania wielkości liter”.
Ale jestem przeciwna, ponieważ w moim frameworku MVC wywołuję akcję kontrolera:
Kontrolery $ controller i $ action są pobierane z adresu URL bez zmian.
Pomyśl, jeśli użytkownik opublikuje link do mojej witryny: https: // my-site / MyPartnerController / MyPartnerGallery
podczas gdy klasa nosi nazwę myPartnerController ...
Oznacza to, że nikt nigdy nie uzyska tej strony, jeśli nazwy klas i funkcji PHP uwzględniają wielkość liter.
Tak, zawsze używam wszystkich nazw w kodzie zgodnie z deklaracją. Ale modlę się, aby nigdy nie rozróżniali wielkości liter w nazwach funkcji i klas.
Dziękuję Ci!
źródło