php spl_autoload_register()想要加载不存在的类

时间:2017-01-10 17:03:25

标签: php class require-once spl-autoload-register

我在使用spl_autoload_register()时遇到了一个奇怪的行为,我无法绕过它。

我有两个网站;第一个是http://localhost/website 它包含专用于类的文件夹:document_root/website1/classes/ 我写了一些课程foo.class.phpbar.class.php

网站上的每个php文件(例如index.php)都通过以下代码加载类:

function loadTheClasses($classe) {
    require_once('classes/'.$classe.'.class.php');
}
spl_autoload_register('loadTheClasses');

第二个网站位于http://localhost/website2。 它还包含一个专门用于类document_root/website2/classes/的文件夹,我在其中编写了类bar.class.php

此外,网站上的每个php文件(例如index.php)都通过以下代码加载类:

function loadTheClasses($classe) {
    require_once('classes/'.$classe.'.class.php');
}
spl_autoload_register('loadTheClasses');

如果这可能会有所帮助,请注意文件website1/classes/bar.class.phpwebsite2/classes/bar.class.php是完全相同的文件。

问题在于:
1 - 我首先运行website1(website1 / index.php) - >一切正常 2 - 在另一个选项卡上,我然后运行website2(website2 / index.php)
在网站2上,我收到以下错误:

Warning: require_once(website2/classes/foo.class.php): failed to open stream: No such file or directory in website2\index.php on line xx
Fatal error: require_once(): Failed opening required 'website2/classes/foo.class.php' (include_path='.; php\PEAR') in  website2\index.php on line xx

直到我按F5功能键重新加载页面...在这种情况下,错误不再出现。 但是,如果我返回标签网站1,然后返回标签网站2,错误再次上升! (直到我再次使用F5键)

website2如何调用foo.class.php?当然,这个类在website2中不存在!但是为什么website2试图加载呢?

请帮忙!

0 个答案:

没有答案
相关问题