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);
}
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.
__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.
Parait à peu près juste.
Il s'agit de traduire des chemins de style Windows (\) en style Unix (/).
__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.
__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 /.