实例化的类是否规定了OOP中的相对路径?

时间:2013-05-26 20:38:03

标签: php oop relative-path absolute-path

我正在围绕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相同的目录中的另一个文件夹中定义的类中实例化的,那么该类是否会指定相对路径?

抱歉新手问题。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

如何使用绝对路径(当然没有硬编码)呢?

$path = dirname(__FILE__) . '/path/to/your/A/B/C'