包含文件的更好方法[php]

时间:2010-11-03 19:25:43

标签: php include

假设我有四个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会调用相对于被调用文件的目录路径,而不是包含文件,这在逻辑上是一个真正的痛苦。

对此有何解决方案?

7 个答案:

答案 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魔术方法稍微加密你的代码。