1

我对 OOP 和命名空间有所了解,我认为这扰乱了我对绝对路径和相对路径的理解。给定以下简单目录:

X +
  A +
    B +
      FileC
    FileB

file_exists($this->filepath)文件 B 有一个类,该类在其构造函数中包含一个调用。FileC它在目录内寻找B,该目录与FileB.

我认为可行的 $filepath 是B/FileC,但它返回 false。然后我也试过../B/FileC了。那我试试..A/B/FileC。又是假的。我必须出去X才能实现:../X/A/B/FileC

显然,我的理解在这里。我 80% 确定命名空间与file_exists. 所以我的下一个猜测——调用对象会影响实际文件路径吗?意思是,如果 FileB 的类是从与 相同目录中的另一个文件夹中定义的类中实例化的,那么A该类是否规定了相对路径?

对不起新手问题。

4

1 回答 1

1

这与OOP没有任何关系......

file_exists 运行在您当前的运行路径之外,这意味着您需要调用

dirname(__FILE__)了解您当前的路径,并了解您尝试访问的文件相对于当前运行路径的位置。仅仅因为您使用的是类 A 或文件 B 并不意味着您可以假设您正在该目录中运行。

它只是关于 php 中的文件和路径。

我认为您当前的目录很大程度上取决于您正在调用的文件以及来自哪个目录,而不是我假设您正在使用的包含文件。

改用绝对路径(当然没有硬编码)怎么样?

$path = dirname(__FILE__) . '/path/to/your/A/B/C'
于 2013-05-26T20:43:48.350 回答