Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nazwa klasy przy tworzeniu obiektu
Forum PHP.pl > Forum > PHP
albrzykowski
Witam, problem jest bardzo prosty ale nie znalazłem rozwiązania:

Chodzi mi o "wrażliwośc" na doże i małe litery w nazwie klasy przy tworzeniu obiektu:

  1. class A{
  2. }
  3. $oA = new A();


i druga wersja:

  1. class A{
  2. }
  3. $oA = new a();


rozwiązanie sprawdzałem(PHP5/Win PHP5/Debian) i i działa poprawnie w obydwu przypadkach, niemniej by może - i właśnie tego nie wiem - nazewnictwo klasy jest zależne od dyrektyw PHP na różnych serwerach.

Będę wdzięczny za pomoc!!
LA
-=Peter=-
PHP nie jest wrażliwe na wielkość liter w nazwach klas, ale... (zawsze jest jakieś ale tongue.gif)

Problem pojawia się przy wykorzystaniu autoloadera klas. Posłużę się przykładem:

  1. //plik A.php
  2. class A{}
  3.  
  4. //plik index.php
  5. function __autoload($class){
  6. require_once $class.'.php';
  7. }
  8.  
  9. $a = new a();
  10. //powyższy kod zadziała na windowsie, gdyż wielkość liter w nazwie plików nie odgrywa roli
  11. //ale na linuksie już nie będzie działał
  12.  
  13. //plik index2.php
  14. require_once 'A.php';
  15. $a = new a();//zadziała i na windowsie i ja linuksie
  16.  
smentek
Dlatego dobrą praktyką jest zastosowanie strtolower() na łańcuchach reprezentujących katalogi w path do pliku z klasą. Kwestia dużych liter w nazwach klas jest jedynie konwencją. Pliki zdecydowanie przy użyciu wyłącznie małych liter.
Cysiaczek
@smentek - Nie wiem, skąd czerpiesz informacje, ale są one odrobinę nie na czasie. To, że Windows jest durnym systemem i ignoruje wielkość znaków, to nie znaczy, że my mamy się dostosowywać do tego, skoro produkcyjne serwery w większości pracują pod kontrolą unixowych systemów. Większość autoloaderów bazuje na nazwie pliku z klasą, więc jeśli klasa ma nazwę MojaKlasa, to plik powinien się nazywać MojaKlasa.class.php, MojaKlasa.php lub class.MojaKlasa.php i to można uznać za standard.
Powoływanie obiektu klasy A jako new a() jest błędem, mimo, że obiekt powstanie.

Przenoszę na PHP
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.