我的问题是绝对路径和一般路径。我写道这是 000webhost 因为它可能是特定于主机的问题,所以在这里。
与任何主机一样,该主机public_html
在根目录中有一个文件夹。我已将图像、CSS、JS 文件放在该文件夹中。此外,还有一个index.php
和一个install.php
。该应用程序的其余部分位于public_html
(../public_html)
名为app
. 我constant.php
在根中创建了一个值,我在其中创建了ABSOLUTE_PATH
一个值为 的常量dirname(__FILE__) . '/app/'
。spl_autoload_register()
使用该常量来加载类,但它不起作用。
现在,您可能认为我做错了什么,但是在spl_autoload
调用之前,我必须加载目录Autoload.php
中的类app/libs/
。另外,我加载User.php
它也在app/libs
目录中,它们都工作正常。
所以,我的问题是,为什么ABSOLUTE_PATH
使用Autoload.php
andUser.php
而不是在spl_autoload_register
. 这是目录树...
root
--- app
--- libs
- Autoload.php
- User.php
--- public_html
-index.php
-install.php
- constants.php
就是这样。重复。在 install.php 中,使用此路径加载 Autoload.php 有效
ABSOLUTE_PATH . libs/Autoload.php
ABSOLUTE_PATH . libs/User.php
但在 Autoload.php 中,这样的东西不起作用
ABSOLUTE_PATH . libs/Bootstrap.php
我知道这是另一个“路径”问题,没有多少人想看到它,但我已经尝试解决它 3 天了,如果我不这样做,我将无法继续我的申请。
预先感谢您的所有答案
编辑:我以为我不必发布Autoload
课程,但在这里......
class Autoload
{
public function classAutoloader($class) {
$container = '';
$delim = explode('_', $class);
$file = ABSOLUTE_PATH . implode('/', $delim) . '.php';
if(!is_readable($file)) {
return false;
}
include_once $file;
}
}
这行代码
$delim = explode('_', $class);
是因为类的全名是Libs_Bootstrap
如此拆分字符串为
ABSOLUTE_PATH/libs/Bootstrap.php
。请注意,绝对路径常量是constants.php
在根中的 which 中生成的。