gpt4 book ai didi

php - spl_autoload_register 在包含的文件中不起作用

转载 作者:可可西里 更新时间:2023-11-01 00:10:09 26 4
gpt4 key购买 nike

我正在使用 spl_autoload_register为了加载类。

我有一个 index.php 文件,其中包含一个 init.php 文件。 spl_autoload_register函数在init.php文件中调用。

index.php 文件中,它正常工作:我可以创建类和东西,它们的名称已解析。

但后来,在 index.php 中,我包含了另一个文件 work.php 来完成一些特定的任务。

奇怪的是,在 work.php 中,找不到我正在使用的类。

如果我在work.php中再次调用spl_autoload_register,类就可以解析了。

真正奇怪的是这种行为并不一致:在我的测试服务器上,我不必复制 spl_autoload_register 调用,但在我的生产服务器上,这是强制性的。

我是否在 php.ini 中遗漏了一些选项?

编辑/更新:这是init.php 文件中的内容,以防万一:

<?php
function my_autoload($class){
include 'class/' . $class . '.class.php';
}

spl_autoload_register('my_autoload');
?>

还有我的 index.php :

<?php
require_once 'include/init.php';

$barcode = new Barcode();
// here is a bunch of test and stuff
include 'work.php';
?>

还有我的 work.php :

<?php
$myObj = new Barcode();
// more useles stuff
?>

条形码在 index.php 代码部分完美创建,但在 work.php 部分失败...

最佳答案

其实,我是个笨蛋。问题不在于包含路径等,而在于 apache 配置:MultiViews。

我的网站只有一个访问点:index.php。我使用 url 重写重定向它上面的所有内容。但是多亏了多 View 选项,如果 url 与文件同名,则 url 重写无法正常工作。

我的目录包含 index.php 和 work.php。

我的重写脚本是这样的:如果你点击 www.mywebsite.com/work,你将使用参数 url=work 继续 index.php。index.php 初始化所有内容,然后包含 work.php

但多亏了 MultiViews 选项,如果我正在访问 www.mywebsite.com/work,它会搜索文件,找到一个 work.php,然后直接调用它。含义:没有初始化,意思是:没有 spl_autoload_register。

感谢您的回答,抱歉。

关于php - spl_autoload_register 在包含的文件中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11117500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com