我听不懂下面的dirname()函数代码

问题描述 投票:-1回答:1

OS:CentosPHP:7.3

我正在学习Kevin Skoglund的有关PHP的初学者课程。这些是代码中的几行。我了解define()dirname()功能。我只是不明白这里发生了什么。

define("PRIVATE_PATH", dirname(__FILE__));
define("PROJECT_PATH", dirname(PRIVATE_PATH));
define("PUBLIC_PATH", PROJECT_PATH . '/public');
define("SHARED_PATH", PRIVATE_PATH . '/shared');

这是四个常量的输出

/var/www/html/globe_bank/private
/var/www/html/globe_bank
/var/www/html/globe_bank/public
/var/www/html/globe_bank/private/shared

我不明白为什么dirname(__FILE__)仅在目录private之前有效。 FILE是否不是要转到所有的根目录。与第二个常量相同

PROJECT_PATH。为什么我们必须传递参数PRIVATE_PATH

这里是另一段代码。

$public_end = strpos($_SERVER['SCRIPT_NAME'], '/public') + 7;
$doc_root = substr($_SERVER['SCRIPT_NAME'], 0, $public_end);
define("WWW_ROOT", $doc_root);
php dirname
1个回答
0
投票

不确定不是__FILE__应该进入所有的根目录的意思是(在Unix上,根目录始终为/,您不需要函数来动态计算它)。另外,请注意dirname()只是一个字符串函数,它不会检查或关心您的实际磁盘内容。

不知道您的期望,dirname()的定义是:

给出包含文件或目录路径的字符串,此函数将返回父目录的路径,该路径是当前目录的上一级。

由于__FILE__被定义为:

已解析符号链接的文件的完整路径和文件名。如果在include中使用,则返回包含文件的名称。

输出清晰:

  • 对于文件,是文件所在目录的完整路径。
  • 对于目录,是父目录的完整路径。

请注意您的课程可能已经过时,因为自PHP / 5.3.0起,__DIR__可以替代dirname(__FILE__)

文件的目录。如果在include中使用,则返回包含文件的目录。

© www.soinside.com 2019 - 2024. All rights reserved.