web-dev-qa-db-ja.com

__FILE__はどういう意味ですか?

Codeigniter _index.php_から次のコードがあります

私の理解は、

_/_(この場合はCIcore_1_7_1)の文字列位置の_$system_folder_がfalseであり、realpath関数が存在し、かつ(?)がfalseではない場合、_$system_folder_が(?)_/$system_folder_。 else _$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); 
}
_
36
shin
  1. realpath() 関数を使用すると、シンボリックリンクとディレクトリトラバース(例:../../)が解決されたファイルシステムパスが得られます。 dirname() 関数は、ディレクトリ内のファイルではなく、ディレクトリのみを提供します。

  2. __FILE__ は、現在の.phpファイル(__FILE__は、インクルードの場合に含まれているものではなく、インしています。

  3. 正しく聞こえます。

  4. これは、Windowsスタイル(\)のパスをUnixスタイル(/)に変換するためです。

45
Greg

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

10
hobbs
__FILE__

ファイルのフルパスとファイル名。インクルード内で使用された場合、インクルードされたファイルの名前が返されます。 PHP 4.0.2、[〜#〜] file [〜#〜]には、シンボリックリンクが解決された絶対パスが常に含まれているのに対し、古いバージョンでは相対パスが含まれていたためいくつかの状況。


string dirname  ( string $path  )

ファイルへのパスを含む文字列を指定すると、この関数はディレクトリの名前を返します。


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

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

5
eKek0