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);
不确定不是__FILE__应该进入所有的根目录的意思是(在Unix上,根目录始终为/
,您不需要函数来动态计算它)。另外,请注意dirname()只是一个字符串函数,它不会检查或关心您的实际磁盘内容。
不知道您的期望,dirname()
的定义是:
给出包含文件或目录路径的字符串,此函数将返回父目录的路径,该路径是当前目录的上一级。
由于__FILE__被定义为:
已解析符号链接的文件的完整路径和文件名。如果在include中使用,则返回包含文件的名称。
输出清晰:
请注意您的课程可能已经过时,因为自PHP / 5.3.0起,__DIR__
可以替代dirname(__FILE__)
:
文件的目录。如果在include中使用,则返回包含文件的目录。