相同的包含在PHP的任何地方作为导演文件?

时间:2015-12-04 23:13:48

标签: php

我在项目上做了很多重构,所以它实际上可以有开发分支。现在,所有包含都是硬编码的,而且非常混乱。很多包含将指向同一个文件,但是包含的内容与每个文件看起来非常不同(并且必要时,对于开发站点必须是不同的,并且暂时将相同文件复制到不同的目录) 。

我已经查看了这个答案:StackOverflow: Path of current PHP script relative to document root并尝试实施

getpath.php with

<?php
define("DIR_BASE", dirname( __FILE__)."/");
define("SERV_CONFIGS", DIR_BASE."server/specific/config.php");

给我一​​个不错的起点,可以适应整体位置(以及一些环境特定的位置变量),这样我就可以改变每个实例

include ("../../../include/foo.bar");
include ("http://example.com/something/else.php");
include ("../../../server/specific/config.php");

include ("../include/foo.bar");
include ("../something/else.php");
include ("http://server/specific/config.php");

include ("http://example.com/include/foo.bar");
include ("/something/else.php");
include ("/server/specific/config.php");

等。全部进入

include (DIR_BASE . "include/foo.bar");
include (DIR_BASE . "something/else.php");
include (SERV_CONFIGS);

这样,我可以将这两行复制粘贴到数百个文件中并完成。 (它不仅仅是三个文件名)。

然而,我突然意识到每个页面仍然需要有一点&#34;独特的雪花&#34;包括我的getpath.php,每个指向该单个文件的getpath.php都包含它。

如何在不使每个页面都有自己的雪花版include(&#34; getpath.php&#34;)的情况下包含getpath.php?

1 个答案:

答案 0 :(得分:1)

您可以在任何需要包含getpath.php的文件中使用$ _SERVER ['DOCUMENT_ROOT']:

include $_SERVER['DOCUMENT_ROOT'] . '/path/to/getpath.php';

这可以避免为不同文件编写特定路径,例如:

include '../../../../../getpath.php';