require_once path / to / file.php vs file.php

时间:2013-11-07 17:07:15

标签: php

在包含包含其他文件的文件时,我遇到以下问题:

// path: /ajax/request.php
require_once("../classes/obj/Car.php");


// path: /classes/obj/Car.php;
require_once("Vehicle.php"); // superclass,  this works
require_once("../exception/NoWheelException");  // this doesn't work when Car.php is require_once()'d from /ajax/request.php

问题似乎是,如果文件A要求文件B需要文件CD,则只有在C和使用D时,"../"在文件名前没有"./"require_once()的情况下使用。

是否有任何解决方法或任何想法来解决此问题?

1 个答案:

答案 0 :(得分:3)

使用__FILE__,以便了解其中包含的内容:

require_once(dirname(__FILE__) . '/../exception/NoWheelException');

其中:

__FILE__ == "/classes/obj/Car.php";
dirname(__FILE__) == "/classes/obj";

另外,我不知道的一个注释 - 如果您的PHP版本足够新,__DIR__ appears to be equivalent to dirname(__FILE__)

More info on __FILE__ and other magic constants here