我一直在检查代码,阅读StackOverflow上的问题,但我根本就没有得到它,或者说我不理解它背后的解释和/或逻辑。
考虑以下
如果我有这样的目录结构
现在我想将head.php文件设置为在整个应用程序中全局访问(仅作为示例)
define('Head', __DIR__ .'/views/head.php');
如果我执行上述操作,我会得到以下结果:
C:\ XAMPP \ htdocs中\ CARRENTAL /视图/ head.php“
技术上哪个是我想要的,但请注意URL包含正斜杠和反斜杠?
我是否可以通过在目录树中的任何位置调用Head来访问head.php文件?
对不起,我一直在检查代码并阅读手册和问题,如果有人能给新手一个明确的解释,我将不胜感激。
更新:
当我尝试在landingPage.php中执行以下操作时,我收到以下错误
include_once Head;
注意:使用未定义的常量Head - 假定'Head'in 第2行的C:\ xampp \ htdocs \ carRental \ views \ landingPage.php
警告:include_once(Head):无法打开流:没有这样的文件或 第2行的C:\ xampp \ htdocs \ carRental \ views \ landingPage.php目录
警告:include_once():无法打开“Head”以包含在内 (include_path ='C:\ xampp \ php \ PEAR')in 第2行的C:\ xampp \ htdocs \ carRental \ views \ landingPage.php
答案 0 :(得分:1)
当你使用define('Head', __DIR__ .'/views/head.php');
时,你已经在定义中硬编码了斜杠。
但是默认情况下,Windows使用\
作为默认目录分隔符,因此__DIR__
将在Windows中的路径中使用\
(使用/
作为另一个,所以它应该不是问题。)
如果您希望它们保持一致,您可以执行以下操作:
define('Head', __DIR__ .DIRECTORY_SEPARATOR ."views".DIRECTORY_SEPARATOR ."head.php");
答案 1 :(得分:0)
技术上哪个是我想要的,但请注意URL包含正斜杠和反斜杠?
是
我是否可以通过在目录树中的任何位置调用Head来访问head.php文件?
没有
您的命令会创建前向和后向斜杠的混合
__DIR__
创建C:\xampp\htdocs\carRental
,'/views/head.php'
是您追加的字符串。
为了能够使用您定义的HEAD
,您必须加载定义它的php文件。另一个php文件不知道这个文件做什么或不做什么,只要它没有持久化。 (您在提供的代码中没有这样做)
要加载文件并使您的定义可用,请使用include_once
/ require_once
答案 2 :(得分:0)
__DIR__
将始终使用它解析到文件的绝对目录。
前进和后退的原因。这部分:
C:\xampp\htdocs\
是Windows文件路径。 这部分:
carRental/views/head.php
是网络服务器路径,即不是Windows。
您的定义将保留正确的文件路径,因此请尝试立即包含它:
include_once Head;