绝对与相对路径

Fra*_*lea 13 php relative-path absolute-path

如果我使用绝对路径,我无法将整个目录移动到新位置.如果我使用相对路径,我无法将单个文件移动到新位置.

这里有什么解决方案?你是否设置了一个包含根路径的配置文件并从那里开始?或者你有一个规则:永远不要移动文件?

我在一些项目中看到人们使用dirname(FILE).有意义的是,我的意思是,为什么不简单地将它留下来,因为dirname无论如何都是相对的(取决于文件所在的位置)?

Luc*_*ofi 15

你应该使用一个配置文件,它将包含在每个文件的第一行,例如你的应用程序看起来像这样

root/App /插件

在根目录内: app-config.php

if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');
Run Code Online (Sandbox Code Playgroud)

现在,假设你必须包含一个插件文件,所以

在你的插件目录内: my-plugin.php

require_once '../../app-config.php';
Run Code Online (Sandbox Code Playgroud)

现在这条线以下的一切都可以使用 ABSPATH

例如,您要加载图像吗?

<img src='".ABSPATH."Public/images/demo.png' alt=''/>
Run Code Online (Sandbox Code Playgroud)

现在,如果您的应用程序旨在自动加载某些文件,那么事情会更简单

plugin-widget-1.php
Run Code Online (Sandbox Code Playgroud)

这样文件中的所有内容或文件加载的任何其他my-plugin.php文件都可以在ABSPATH每次文件时使用without include app-config.php.

考虑到这一点,你可以在app-config.php示例中拥有所需的所有简写

define('UPLOAD_PATH', ABSPATH. 'Public/uploads/');
define('IMAGES_PATH', ABSPATH. 'Public/images/');
define('HELPERS_PATH', ABSPATH. 'App/helpers/');
...
Run Code Online (Sandbox Code Playgroud)

所以,既然已经全部定义了,如果需要移动文件,让我们说一个文件夹转发示例:

root/App /插件/实用程序

只是inlucde require_once '../../../app-config.php';

显然我认为你不是每次都改变路径=)无论如何你需要这样做总是更简单地改变一个文件包含而不是数百.

希望这对你有意义=)