2012-06-01 4 views
1

это очень простой, но очень запутанные самый раз ..PHP включают в себя/требуют пути спецификации форматов

я должен знать, что это значит, когда мы с помощью включения файлов, следуя модели (где я видел во многих местах, могут быть есть больше, чем это)

Что это значит?

"./path" 

"/path" 

"../path" 

dirname(__FILE__) 

basename(dirname(dirname(__FILE__))); 

require dirname(__FILE__) . DIRECTORY_SEPARATOR; 

pathinfo() 

define('BASE_PATH',realpath('.')); 

define('BASE_URL', dirname($_SERVER["SCRIPT_NAME"])); 

ответ

2

"./path"

Точка относится к рабочему каталогу. Это каталог, который печатается при вводе «pwd» в командной строке. Это может быть каталог самого скрипта или каталог сценария, который запускается первым, но не всегда.

"/ путь"

Дорожки, которые начинаются с косыми чертами являются относительно корневой директории. Обычно это корневой каталог сервера, но он также может быть точкой монтирования, вашим каталогом пользователей или, возможно, вашим веб-корнем, в зависимости от того, как настроен сервер.

"../path"

".." относится к каталогу, который один уровень выше рабочей директории. Таким образом, если рабочий каталог/Foo/бар, то ".." есть "/ Foo" и "../path" относится к "/ Foo/путь"

имя_директории (__ FILE__)

dirname() «Возвращает путь родительского каталога». __FILE__ - волшебная константа, которая ссылается на полный путь к файлу, который ее использует. Так что если у вас есть скрипт на /foo/bar/baz/file.php, то __FILE__ будет «/foo/bar/baz/file.php», а dirname (__ FILE__) будет «/ foo/bar/baz»

basename (dirname (dirname (__ FILE__)));

basename() "Возвращает конечный компонент имени пути". Для dirname() применяются одинаковые правила, поэтому в предыдущем примере dirname (__ FILE__) является «/ foo/bar/baz» dirname (dirname (__ FILE__)) будет «/ foo/bar». Конечным компонентом этого пути является «bar», поэтому для этого __FILE__, basename (dirname (dirname (__ FILE__))) будет «bar».

требует имя dirname (__ FILE__). DIRECTORY_SEPARATOR;

DIRECTORY_SEPARATOR - это константа, о которой я не знал, но, по-видимому, она определена в расширении файловой системы. Если __FILE__ является «/foo/bar/baz/file.php», тогда путь будет выглядеть как «/ foo/bar/baz /». Поэтому это утверждение представляется неполным. require() похоже на include(), за исключением того, что он дает ошибку, если файл не найден. Путь никогда не ссылается на файл, поэтому этот вывод не имеет большого смысла.

PathInfo()

PathInfo() разбирает путь.Передайте ему путь, и он даст ассоциативный массив, содержащий ключи dirname, basename, extension и filename с соответствующими фрагментами проанализированного пути.

define ('BASE_PATH', realpath ('.'));

realpath() примет относительный путь и превратит его в абсолютный путь. Как указывалось ранее, «.» ссылается на рабочий каталог, и если это «/ foo/bar/baz», то realpath («.») вернет «/ foo/bar/baz». define() будет делать константу, поэтому это приводит к установке константы BASE_PATH в рабочий каталог сценария. Это может быть полезно, если рабочий каталог изменяется в ходе сценария или если вы включаете файлы в подкаталоги, они могут использовать константу для ссылки на верхний уровень веб-приложения с ней.

define ('BASE_URL', dirname ($ _ SERVER ["SCRIPT_NAME"]));

Такая же сделка с define() и dirname(). Новое здесь - $ _SERVER ["SCRIPT_NAME"]. Если адрес, загружаемый сценарием, - example.com/foo/file.php, тогда это будет «/foo/file.php» и dirname() этого «/ foo». Установка этой константы может быть полезна для страниц в веб-приложении, чтобы ссылаться друг на друга.