假设我有四个PHP文件:
WWW / global.php
<?php
function doAwesomeStuff() {}
WWW / child1.php
<?php
include ("global.php");
function Something1() {}
WWW / child2.php
<?php
include ("global.php");
function Something2() {}
WWW /子目录/ grandchild.php
<?php
include ("../global.php");
include ("../child2.php");
function Something3() {}
我遇到了在一种情况下包含全局两次的问题,但如果我们不断变得复杂,那么include会调用相对于被调用文件的目录路径,而不是包含文件,这在逻辑上是一个真正的痛苦。
对此有何解决方案?
答案 0 :(得分:5)
就个人而言,我会说要更好地跟踪依赖关系或者拥有一个中心包含文件,但如果失败,那么总是include_once()
。
注意:include_once()
和require_once()
都比普通include()
和require()
慢得多。
答案 1 :(得分:3)
在grandchild.php
中,执行以下操作:
set_include_path("..");
require_once("global.php");
require_once("child2.php");
在所有其他文件中,最好将include
替换为require_once
,以避免在无法包含文件(“require”)之后继续,并避免包含多次归档(“一次”)。
答案 2 :(得分:1)
查看require_once,这样一个文件只包含 ,如果以前没有包含它。
答案 3 :(得分:0)
您可以使用require_once()。当然,最好是对文件进行可靠的依赖。但require_once将检查“文件是否已被包含,如果是,则不再包括(要求)”。
答案 4 :(得分:0)
我认为您正在寻找require_once
答案 5 :(得分:0)
正如已经提到的,require_once'include.php'将完成包含太多的工作RE。
我已经玩过使用getcwd()返回路径来帮助你需要包含的东西,但遗憾的是我没有具体的东西给你看。
答案 6 :(得分:0)
除了require_once部分之外,你可以在中央配置文件中使用php的__autoload魔术方法稍微加密你的代码。