2009-10-01 1 views
27

я следующий код из Codeigniter index.phpЧто означает __FILE__?

Я понимаю, что,

Если / позиции строки в $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); 
} 

ответ

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

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

  3. Звуков о праве.

  4. Это перевести из стиля Windows, (\) путь к стилю Unix (/).

+0

Почему существуют два \ s, а не один \? – shin

+1

Поскольку символ \ escape-символ - чтобы поставить цитату внутри строки, которую вы используете, это «цитата». Поэтому, чтобы поставить обратную косую черту, вам нужно два из них: «это \\ обратная косая черта», – Greg

8

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

+1

Идеального объяснение. Спасибо. – Jonny

+0

Некорректный, так как PHP 4.01 '__FILE__' ** lways ** возвращает абсолютный путь. http://php.net/manual/en/language.constants.predefined.php – iantonuk

5
__FILE__ 

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


string dirname (string $path ) 

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


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

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

 Смежные вопросы

  • Нет связанных вопросов^_^