Что означает __FILE__? - PullRequest
       24

Что означает __FILE__?

36 голосов
/ 02 октября 2009

У меня есть следующий код от Codeigniter index.php

Насколько я понимаю,

Если / позиции строки в $system_folder (в данном случае CIcore_1_7_1) равно false, и если realpath функция существует, И (?) не является false, $system_folder назначен (?) /$system_folder. иначе $system_folder присваивается $system_folder с заменой \\ на /.

Q1. Что означает функция realpath?

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

@realpath(dirname(__FILE__))

Q3. Я прав? Есть ли у меня недоразумение?

Q4. В какой ситуации вам нужно следующее?

str_replace("\\", "/", $system_folder)

$system_folder = "CIcore_1_7_1";

/*
|---------------------------------------------------------------
| SET THE SERVER PATH
|---------------------------------------------------------------
|
| Let's attempt to determine the full-server path to the "system"
| folder in order to reduce the possibility of path problems.
| Note: We only attempt this if the user hasn't specified a 
| full server path.
|
*/

if (strpos($system_folder, '/') === FALSE)
{
    if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)
    {
        $system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
    }
}
else
{
    // Swap directory separators to Unix style for consistency
    $system_folder = str_replace("\\", "/", $system_folder); 
}

Ответы [ 3 ]

43 голосов
/ 02 октября 2009
  1. Функция realpath() дает вам путь к файловой системе с разрешением любых символических ссылок и обхода каталога (например, ../../). Функция dirname() дает вам только каталог, а не файл внутри него.

  2. __FILE__ - магическая константа, которая дает вам путь файловой системы к текущему файлу .php (тот, в котором находится __FILE__, а не тот, в который он включен, если это включают в себя.

  3. Звучит правее.

  4. Это перевод из путей в стиле Windows (\) в стиль Unix (/).

10 голосов
/ 02 октября 2009

__FILE__ - это просто имя текущего файла. realpath(dirname(__FILE__)) получает имя каталога, в котором находится файл - по сути, каталог, в котором установлено приложение. И @ - это чрезвычайно глупый способ PHP подавлять ошибки.

5 голосов
/ 02 октября 2009
__FILE__

Полный путь и имя файла файл. Если используется внутри включения, имя включенного файла возвращается. Начиная с PHP 4.0.2, FILE всегда содержит абсолютный путь с символические ссылки разрешены, тогда как в старых версии это содержало относительный путь при некоторых обстоятельствах.


string dirname  ( string $path  )

Учитывая строку, содержащую путь к файлу, эта функция вернет название каталога.


str_replace("\\", "/", $system_folder)

Вам нужно, чтобы это было согласовано в разделителях путей между различными операционными системами. Windows использует \, а * nix использует /, вы используете /.

...