我无法理解以下 dirname() 函数代码

I fail to understand the following dirname() function code

OS:森托斯 PHP: 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');

这是 4 个常量的输出

/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__) 只进入目录 privateFILE 不应该转到所有根目录。 与第二个常量相同

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);

不确定 Doesn't __FILE__ suppose to be go to all the root directory 注释意味着什么(根目录总是 / Unix,你不需要一个函数来动态计算它)。另外,请注意 dirname() 只是一个字符串函数,它不会检查或关心您的实际磁盘内容。

不知道你在期待什么,dirname() 的定义是:

Given a string containing the path of a file or directory, this function will return the parent directory's path that is levels up from the current directory.

因为 __FILE__ 定义为:

The full path and filename of the file with symlinks resolved. If used inside an include, the name of the included file is returned.

输出清晰:

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

请注意,您的课程可能已经过时了,因为 __DIR__ 作为 dirname(__FILE__) 的替代品存在,因为 PHP/5.3.0:

The directory of the file. If used inside an include, the directory of the included file is returned.