我已经设法自学了PHP / PDO / SQL,然而,我不能在我的生活中找出相对路径如何在PHP& HTML。我有一个带有一些目录和分支的多页面网站,我希望能够创建一个简单的模板,我可以使用它创建新页面,而不必每次都更改我的样式表和PHP包含的链接,具体取决于目录。
这是我的布局如下:
MySite (http://localhost/MySite/)
RESOURCES //Not a folder, just here for readability
> serverside > initialize.php
> templates > header.php
footer.php
navuser.php
navmenu.php
> styles > styles.css
> images > variousImages.png
PAGES //Not a folder, just here for readability
> index.php
login.php
register.php
gettingstarted.php
> you > settings > settings.php
> youraccount.php
> yourfavourites.php
以下是游戏规则:每个页面首先包含 serverside / initialize.php 文件(PHP包含)。然后,每个页面通过标准HTML href属性包含 styles / styles.css 。然后,每个页面都通过PHP包含 templates / header.php 和 templates / footer.php ,前ALSO包含 templates / navuser.php ,和 templates / navmenu.php 。
问题是,如果其中一个页面位于不同的级别(例如你/ settings / settings.php),则所有那些包含和href必须更改,这似乎会影响包含内部的包含。这是不可能的!
我想要的是能够指定文件名而不使用真正的绝对路径,因此如果需要,我可以在我的网站中复制一个模板文件 - 我已查看__DIR__
,{{1} },__FILE__
,转换变量$ dir作为文档根,但没有成功。我不明白发生了一半的事情。
任何人都可以了解我的情况吗?我本质上是在寻找关于相对根/链接/文件如何在PHP中工作的完整解释。我如何处理更复杂的目录结构?再说一遍,我该怎么办?谢谢。
答案 0 :(得分:2)
您通常会在 index.php 文件中设置一个包含绝对路径和绝对网址的常量,然后从包含等中引用它们。
示例 index.php :
<?php
define('ROOT_DIR', __DIR__);
然后您可以使用该常量:
require ROOT_DIR . '/includes/database.php';
require ROOT_DIR . '/application/controllers/MyController.php';
require ROOT_DIR . '/application/models/MyModel.php';
等等。希望这会有所帮助。