我正在围绕OOP和命名空间,我认为这弄乱了我对绝对路径和相对路径的理解。给出以下简单目录:
X +
A +
B +
FileC
FileB
文件B有一个类,在其构造函数中包含file_exists($this->filepath)
调用。它正在FileC
目录中查找B
,该目录与FileB
位于同一目录中。
我假设的$ filepath是B/FileC
,但是返回false。然后我尝试../B/FileC
也是假的。然后我尝试..A/B/FileC
。再次错误。我必须前往X
才能成真:../X/A/B/FileC
显然,我的理解是在这里。我80%确定命名空间与file_exists
无关。所以我的下一个猜测 - 调用对象会影响实际文件路径吗?这意味着,如果FileB的类是在与A
相同的目录中的另一个文件夹中定义的类中实例化的,那么该类是否会指定相对路径?
抱歉新手问题。
答案 0 :(得分:1)
这与OOP没有任何关系......
file_exists运行当前的运行路径,这意味着您需要调用
dirname(__FILE__)
了解您当前的路径,并了解您尝试访问的文件与当前运行路径相关的位置。
仅仅因为您使用的是A类或B文件并不意味着您可以假设您正在该目录中运行。
这只是关于php中的文件和路径。
我认为您当前的目录在很大程度上取决于您调用的文件和目录,而不是我假设您正在使用的包含文件。
如何使用绝对路径(当然没有硬编码)呢?
$path = dirname(__FILE__) . '/path/to/your/A/B/C'