我正在了解OOP和名称空间,我认为它混淆了我对绝对路径和相对路径的理解。给定以下简单目录:
X +
A +
B +
FileC
FileB
文件B有一个类,在它的构造函数中包含一个file_exists($this->filepath)
调用。它在B
目录中查找FileC
,该目录与FileB
在同一个目录中。
我认为行得通的$filepath是B/FileC
,但它返回false。然后我尝试../B/FileC
也假。然后我试试..A/B/FileC
。再一次假。我必须去X
才能得到true: ../X/A/B/FileC
file_exists
无关。所以我的下一个猜想是——调用对象会影响相对文件路径吗?意思是,如果FileB的类是从在与A
相同目录的另一个文件夹中定义的类中实例化的,那么该类是否指示相对路径?
这与OOP没有任何关系…
file_exists从当前运行路径运行,这意味着您需要调用
dirname(__FILE__)
来了解您当前的路径,并了解您试图访问的文件相对于当前运行路径的位置。仅仅因为你正在使用类A或文件B,并不意味着你可以假设你在那个目录下运行。
这只是关于php中的文件和路径。
我认为你的当前目录很大程度上取决于你从哪个目录调用哪个文件,而不是我认为你正在使用的包含文件。
使用绝对路径(当然不需要硬编码)如何?
$path = dirname(__FILE__) . '/path/to/your/A/B/C'