2009-10-01 8 views
27

私は私の理解では、$system_folder内の文字列の位置の/もし__FILE__とはどういう意味ですか?

(この場合はCIcore_1_7_1が)false、 とrealpath機能が存在した場合である(?)がある、ということですCodeIgniterのindex.php

から、次のコードを持っていますfalse,$system_folderは(?)/$system_folderに割り当てられています。 else $system_folder$system_folderに割り当てられ、\\の代わりに/が使用されます。

Q1。 realpath関数とは何を意味しますか?

Q2。これは何を意味するのでしょうか?

@realpath(dirname(__FILE__)) 

Q3。私は正しい?私は誤解をお持ちですか?

4。どのような状況で以下が必要ですか?

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__ 1、ではないそれはそれはだ場合によって含まれています1へのファイルシステムのパスを与える魔法の定数であります。

  3. サウンドを右について。

  4. このUnix形式(/)にWindowsスタイル(\)のパスから変換することである。

+0

1つではなく2つの\があるのはなぜですか? – shin

+1

\はエスケープ文字であるため、文字列の中に引用符を入れるには "引用符"を使用します。バックスラッシュを入れるには2つが必要です: "this is \\ a backslash" – Greg

8

__FILE__単に現在のファイルの名前です。 realpath(dirname(__FILE__))は、ファイルが存在するディレクトリの名前、つまりアプリケーションがインストールされているディレクトリの名前を取得します。そして、@は、PHPがエラーを抑制する非常にばかげた方法です。

+1

パーフェクト説明。ありがとうございました。 – Jonny

+0

正しくない、PHP 4.01 '__FILE__' ** Aからlways **は絶対パスを返します。 http://php.net/manual/en/language.constants.predefined.php – iantonuk

5
__FILE__ 

ファイルのフルパスとファイル名。インクルードの内部で使用された場合は、インクルードされたファイルの名前が返されます( )。 PHP 4.0.2ので は、FILEは常に 古いバージョンでは、それはいくつかの状況下で相対パス を含有し、一方解決 シンボリックリンク絶対パスを含みます。

string dirname (string $path ) 

ファイルへのパスを含む文字列を考えると


、この関数は、ディレクトリの名前 を返します。


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

あなたは、異なるオペレーティングシステム間のパス区切り文字でconsistenするために、これを必要とします。 Windowsは\と* nixが/を使用して/を使います。

関連する問題