为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:正确获取包含/要求过程

PHP:正确获取包含/要求过程

PHP
慕勒3428872 2023-04-21 14:57:33
我正在寻找一种更好的方法来处理 PHP 中的相对路径。我遇到的一个问题是包含来自子目录的文件,该子目录也包含文件。使用此过程导致相对路径中断。如果文件不存在,则通过更改变量(路径)来缓解此问题。但是,出于某种原因,我不太满意,因为我认为必须有更好的方法来处理这个问题。例子:ROOT/config/config.phpROOT/includes/functions.phpROOT/includes/header.php<-- 包括functions.php和config.phpROOT/index.php<-- 包括header.phpROOT/admin/index.php<--- 还包括header.php(as ../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;虽然我已经实现了我的目标,但我只想继续采用最佳实践并尽量减少草率的方法。
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

虽然您的项目足够简单(从我在您的帖子中看到的内容),但您可以在配置文件中定义路径常量,从而只需更改目录名称和常量值即可更轻松地重命名/替换它们。


例如:


<?php #index.php


define('ROOT', __dir__);

define('CONFIG_DIR', ROOT . DIRECTORY_SEPARATOR . 'config');

define('INCLUDES_DIR', ROOT . DIRECTORY_SEPARATOR . 'includes');

对于类,有一个最常用且强烈推荐的标准,那就是PSR-4 Autoload standard,其中有 Namespace/SubNamespaces/ClassName。


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信