web-dev-qa-db-fra.com

Que signifie __FILE__?

J'ai le code suivant de Codeigniter index.php

Ma compréhension est que,

Si / de la position de la chaîne dans $system_folder (dans ce cas CIcore_1_7_1) est false, et si realpath la fonction existe ET (?) n'est pas false, $system_folder est affecté à (?) /$system_folder. autre $system_folder est affecté à $system_folder en remplaçant \\ avec /.

Q1. Que signifie la fonction realpath?

Q2. Qu'est-ce que ça veut dire?

@realpath(dirname(__FILE__))

Q3. Ai-je raison? Ai-je un malentendu?

Q4. De quel type de situation avez-vous besoin?

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. La fonction realpath() vous donne le chemin d'accès au système de fichiers, avec tous les liens symboliques et les répertoires traversant (par exemple ../../) résolus. La fonction dirname() vous donne juste le répertoire, pas le fichier qu'il contient.

  2. __FILE__ est une constante magique qui vous donne le chemin du système de fichiers vers le fichier .php actuel (celui que __FILE__ est dedans, pas celui dans lequel il est inclus s'il s'agit d'un inclus.

  3. Parait à peu près juste.

  4. Il s'agit de traduire des chemins de style Windows (\) en style Unix (/).

45
Greg

__FILE__ Est simplement le nom du fichier actuel. realpath(dirname(__FILE__)) obtient le nom du répertoire dans lequel se trouve le fichier - essentiellement, le répertoire dans lequel l'application est installée. Et @ est la manière extrêmement stupide de PHP de supprimer les erreurs.

10
hobbs
__FILE__

Chemin d'accès complet et nom de fichier du fichier. S'il est utilisé dans une inclusion, le nom du fichier inclus est renvoyé. Puisque PHP 4.0.2, le fichier [~ # ~] [~ # ~] contient toujours un chemin absolu avec des liens symboliques résolus alors que dans les anciennes versions, il contenait un chemin relatif sous certaines circonstances.


string dirname  ( string $path  )

Étant donné une chaîne contenant un chemin d'accès à un fichier, cette fonction renverra le nom du répertoire.


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

Vous avez besoin que cela soit composé de séparateurs de chemin entre différents systèmes d'exploitation. Windows utilise\et * nix utilise /, vous continuez avec /.

5
eKek0