【问题标题】:I fail to understand the following dirname() function code我无法理解以下 dirname() 函数代码
【发布时间】:2020-06-05 09:40:51
【问题描述】:

操作系统:Centos 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);

【问题讨论】:

  • 输出数值,一目了然。
  • 只需回显echo PRIVATE_PATH; 之类的内容,以便您了解它的外观。另外,像php strpos function 这样的谷歌搜索会有所帮助
  • 这不是我不明白的功能,是他们在做什么,这让我很困惑。

标签: php dirname


【解决方案1】:

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

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

给定一个包含文件或目录路径的字符串,此函数将返回从当前目录升级的父目录路径。

由于__FILE__被定义为:

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

输出清晰:

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

请注意,您的课程可能已经过时了,因为自 PHP/5.3.0 以来,__DIR__dirname(__FILE__) 的替代品:

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

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 2022-06-11
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多