Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]include path - zend framework
Forum PHP.pl > Forum > Przedszkole
wpaski
Głupie mam pytanie jednak nie rozumiem dlaczego każą mi edytować plik php.ini i wstawiać tam include_path="d:\wamp\bin\php\zendframework\library" (sciezka przykadowa rozumiem ze moze byc jakakolwiek)

nie dokońca rozumiem idee include_path, chodzi o to, że include będzie teraz wczytywał pliki z katalogu library, czyli jakby "rozszerza" swój zasięg tak? obojętnie gdzie będę, mogę includować sobie co chce z tego katalogu?
Czyli po to to jest żeby nie musieć tworzyć projektu wewnątrz katalogu library?
Turson
Chodzi o to, że core frameworka powinno się trzymać poza katalogiem publicznym i może on tam leżeć gdzie chce, więc musisz podać ścieżkę, żeby wiedział gdzie to core jest
Crozin
W uproszczeniu możesz mieć trzy rodzaje ścieżek do pliku:
Kod
/var/www/moja-strona/moj-katalog/moj-plik
./moja-strona/moj-katalog/moj-plik
moja-strona/moj-katalog/moj-plik
I teraz:
1. Ścieżka bezwzględna, która nie jest w żaden sposób modyfikowana/przetwarzana - po prostu wskazuje konkretnie na plik.
2. Ścieżka względna zaczynająca się od "aktualny katalog" (kropka) i podająca dalszą ścieżkę względem niego. Jeżeli Twój program został uruchomiony z katalogu /var/www finalnie ścieżka będzie taka sama jak ta z punktu pierwszego. Ale jeżeli znajdowałbyś się w katalogu /home/moj-uzytkownik finalną ścieżką byłoby /home/moj-uzytkownik/moja-strona/moj-katalog/moj-plik.
3. W tym przypadku wykorzystane zostanie właśnie include_path. W tej dyrektywie znajduje się kilka ścieżek do różnych katalogów, np. /var/www, /home/moj-uzytkownik oraz /var/lib/zend. W takim przypadku system spróbuje wyszukać plik w /var/www/moja-strona/moj-katalog/moj-plik - jeżeli taki nie istnieje przejdzie dalej, /home/moj-uzytkownik/moja-strona/moj-katalog/moj-plik - jeżeli taki plik nie istnieje znowu spróbuje dalej, /var/lib/zend/moja-strona/moj-katalog/moj-plik jeżeli taki plik istnieje dołączy go, jeżeli nie uzna, że podany plik nie istnieje.

Zauważ, że zapewne Zend stosuje zapisy:
  1. require_once 'Zend/Some/Class.php';
To jest właśnie trzeci przypadek.
wpaski
rozumiem ale równie dobrze można napisać na początku aplikacji ścieżkę do biblioteki/frameworka której się używa (w tym przypadku zend) i napisać jakiś autoloader, chociaż pewnie to już trudniejszy sposób dlatego include_path jest lepszym rozwiązaniem, okej dzięki za tłumaczenia, jak widać chodzi o to żeby było prościej - i dobrze.
Crozin
Tak, powinno się skorzystać z autoloadera i ZendFrameowrk to robi. Jego stara wersja (1.x), która pojawiła się dawno temu korzystała z include_path ponieważ na dobrą sprawę nie było wtedy dostępnych autoloaderów.
viking
Cytat(Crozin @ 12.07.2014, 11:31:58 ) *
Tak, powinno się skorzystać z autoloadera i ZendFrameowrk to robi. Jego stara wersja (1.x), która pojawiła się dawno temu korzystała z include_path ponieważ na dobrą sprawę nie było wtedy dostępnych autoloaderów.


A Zend_Loader istniejący od samego początku? smile.gif
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.