我想创建"包括所有"文件,然后从每个"真实"文件而不是每次都包含一堆文件,包括刚创建的"包括所有"文件。
看一下示例 - inc.php:
<?php
require_once('A/a.php');
require_once('A/B/b.php');
?>
A / a.php只会:
<?php
require_once('../inc.php');
?>
A / B / b.php:
<?php
require_once("../../inc.php");
?>
然而它不起作用 - 如果我执行&#34; a.php&#34;我得到错误&#34; inc.php&#34;未被发现包含在&#34; b.php&#34;中,以及执行&#34; b.php&#34;来自&#34; a.php&#34;。
的类比我不知道我的代码有什么问题 - 如何解决?
答案 0 :(得分:2)
您应该在PHP中查看自动加载以自动包含尚未包含的任何类。这非常有用:PHP Manual
Also, here is a quick tutorial I wrote on the subject.
或者,您可以创建一个全局PHP文件(global.php
),并在每个页面上包含该文件。在global.php
include_once
您需要的所有文件中。但是,就像我说的,上面的方法是优惠的。
答案 1 :(得分:1)
如果您正在使用OOP,请务必按照cjhill的建议进行自动加载。
但是,如果您正在做一些不那么有条理的事情,并且需要手动包含文件,我建议在指定包含路径时始终使用__DIR__
常量。这样,包括路径将相对于它们所定义的文件,而不是入口点文件。
include_once __DIR__ . "/../../includes.php".
你应该想到&#34;包括&#34;作为复制粘贴,只需将代码从包含的文件中删除到包含调用的位置即可。因此,包含文件中的文件路径将相对于最初请求的文件,除非您使用__DIR__
之类的内容指定绝对路径。
有关详细信息,请参阅手册中的Magic Constants。
答案 2 :(得分:1)
一个好方法是使用这样的绝对路径:
Php&lt; 5.3:
require_once(dirname(__FILE__) . '../inc.php');
PHP 5.3:
require_once(__DIR__. '../inc.php');
答案 3 :(得分:0)
你有一个循环。文件A / a.pho被包含在文件inc.php中,那么为什么在文件A / a.php的顶部有一个要求inc.pho?
require函数q将括号中的文件放入调用该函数的文件中。
文件A / a.php和A / B / B.php会将inc.php中的所有范围数据附加到inc.php