PHP:正确处理包含/要求过程



我正在寻找一种更好的方法来处理PHP中的相对路径。 我遇到的一个问题是包含来自子目录的文件,该子目录也包含文件。 使用此过程会导致相对路径中断。 为了缓解此问题,如果文件不存在,则通过更改变量(路径(。 但是,由于某种原因,它对我来说并不好,因为我认为必须有更好的方法来处理这个问题。

例:

ROOT/config/config.php

ROOT/includes/functions.php

ROOT/includes/header.php<-- 包括functions.phpconfig.php

ROOT/index.php<-- 包括header.php

ROOT/admin/index.php<---还包括header.php(如../includes/header.php(,并具有以下代码来修复断开的链接

下面是我使用的代码,它确实解决了问题,但我只是在验证这是否正常,或者是否有更好的方法来处理相对文件路径。

define('PREV_DIR', '../');
$config_file = './config/config.php';
$functions_file = './includes/functions.php';
if ( !file_exists($config_file)) {
$config_file = PREV_DIR . './config/config.php';
}
if ( !file_exists($functions_file)) {
$functions_file = PREV_DIR . './config/config.php';
}    
include $config_file;
include $functions_file;

虽然我已经实现了我的目标,但我只想继续采用最佳实践并尽量减少草率的方法。

虽然您的项目非常简单(从我在您的帖子中看到的内容来看(,但您可以在配置文件中定义路径常量,从而通过更改目录名称和常量的值来简化重命名/替换它们。

例如:

<?php #index.php
define('ROOT', __dir__);
define('CONFIG_DIR', ROOT . DIRECTORY_SEPARATOR . 'config');
define('INCLUDES_DIR', ROOT . DIRECTORY_SEPARATOR . 'includes');

对于类,有一个最常用的标准,强烈建议使用,那就是PSR-4自动加载标准,其中有命名空间/子命名空间/类名。

最新更新