首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php类自动加载--似乎在缓存?

php类自动加载--似乎在缓存?
EN

Stack Overflow用户
提问于 2013-01-24 00:45:14
回答 2查看 1.1K关注 0票数 0

我最近在我的php代码中实现了以下代码来自动加载类:

代码语言:javascript
运行
复制
function my_autoloader($class) {
    include 'classes/class_' . $class . '.php';
}
spl_autoload_register('my_autoloader');

代码包含在需要生成网页的所有文件的顶部的文件中。因此,我开始从我的代码中删除require_once调用。下面是一个例子:

代码语言:javascript
运行
复制
require_once('classes/class_web_page.php');

正如您可能从上面了解到的,我的站点(它是一个在线社区,所以有一个论坛、画廊等)上的各种页面都使用web_page类来生成页面标题、菜单等。各种代码片段创建一个web_page对象,设置各种参数来确定需要哪些菜单选项等,为页面提供一些内容,并生成html。

在我对class_web_page.php文件进行更改之前,一切似乎都很好。这一变化在大多数网站上都很明显。除了主页。

我刷新了浏览器,关闭并再次打开:-)尝试调用http://www.terragenesis.co.uk/index.php,而不仅仅是http://www.terragenesis.co.uk/,甚至在服务器上停止和重新启动apache。尽管如此,这些变化并没有显示在主页上。最后,我将require_once代码行放回了index.php中……然后,嘿:我在class_web_page.php中所做的修改出现在了主页上。

因此,在我看来,自动加载器正在加载class_web_page.php的缓存副本,即使是重启Apache,也无法说服它获得新版本。为什么它应该对主页这样做,而不是对其他页面...我没有头绪。

还有没有人经历过这种情况?我是不是在自动加载器代码上做错了什么?我该怎么解决它..。或者我必须将所有的require_once语句放回原位?:-(

我的服务器使用PHP版本5.1.6

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 19:25:55

我找到了这个问题的答案...和往常一样,我做了一件愚蠢得令人难以置信的事情:

事实证明,在过去的某个时刻,我意外地将class_web_page.php的副本上传到了站点主目录中,而不是classes子目录中。所以它存在两次。

因此,尽管我的自动加载器告诉php查看classs子目录,但它将首先在与主脚本相同的目录中查找(在我的站点主页的情况下是index.php)。所有其他站点页面脚本都在子目录(论坛、图库等)中,因此它们使用/class/class_web_page.php是“正确的”

我现在已经删除了主目录中的class_web_page.php副本...一切都按其应有的方式运行。

票数 1
EN

Stack Overflow用户

发布于 2013-01-24 00:48:28

是否确实加载了此文件(或其缓存版本)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14484863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档