2009-06-23 10 views
11

Jeśli mam plik index.php, który zawiera INC/footer.php chciałbym napisać:Zawiera php Czy jest jakiś sposób, aby dołączyć plik tylko do tego dokumentu?

include 'inc/footer.php'; 

Jeśli chcę to kolejny plik wewnątrz footer.php, muszę zrobić to w stosunku do index.php plik (ten, który go zawiera). To nie może być problem, ale co jeśli chcę dołączyć index.php z całej innej lokalizacji?

Rozumiem, że istnieje kilka metod osiągnięcia tego, jak zdefiniowanie bezwzględnej ścieżki lub użycie nazwy (FILE).

To jest coś, co nigdy nie było prawdziwym problemem, ponieważ tak czy owak zawsze to odkryłem, ale zawsze zastanawiałem się, jak dokładnie zawiera pracę w php.

Czy ktoś może mi wyjaśnić, co się dzieje pod maską?

Dzięki

Odpowiedz

31

To może pomóc: (od http://php.net/manual/en/function.include.php)

plików na tym to pierwszy spojrzał w każdym wpisie include_path względem obecna praca katalogu, a następnie w katalogu obecnego skryptu. Na przykład. jeśli twoja ścieżka_do_korzystania to biblioteki, bieżącym katalogiem roboczym jest/www /, ty zawarte jest/a.php i tam jest zawiera "b.php" w tym pliku, b.php jest najpierw przeglądane w/www/bibliotekach/ , a następnie w/www/include /. Jeśli nazwa pliku zaczyna się od ./ lub ../, to wyglądało bo tylko w bieżącym katalogu roboczym lub rodzica aktualnego katalogu pracy, odpowiednio

swoje stany pytanie:

Jeśli chcę dołączyć inny plik w footer.php, muszę to zrobić w stosunku do pliku index.php ( , który go zawiera).

Jest to prawdą tylko wtedy, gdy filepath próbujesz include() startów z ./ lub ../. Jeśli chcesz dołączyć plik powyżej bieżącego pliku za pomocą ścieżki względnej, można (jak sugerowano) używać:

include(dirname(__FILE__) . '/../file.php') 

jeśli zdefiniować ścieżkę bezwzględną, można również dodać do prądu include_path:

set_include_path(get_include_path() . PATH_SEPARATOR . '/absolute/path'); 

Możesz wtedy zrobić wszystkie swoje uwzględnienia w stosunku do "/ absolute/path /".

-2

Najlepszym miejscem do znalezienia odpowiedzi jest instrukcja PHP.

http://php.net/manual/en/function.include.php

Krótka odpowiedź: ścieżka jest w stosunku do wykonującego skryptu PHP nie obejmuje sub.

Ustawienie globalnej bezwzględnej ścieżki do swoich funkcji, klas itp. Folderów jest najlepszą metodą.

+0

Czy warto ustawić go definiując lub zmieniając plik ini? – 0plus1

+1

Mam na myśli ustawić jako zdefiniować. np. define ('CLASS_DIR', '/ path/to/classes /'); –

Powiązane problemy