gpt4 book ai didi

php - __autoload() 没有被调用?

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:59 25 4
gpt4 key购买 nike

我正在使用 Amazon Payments PHP SDK,并且 __autoload() 在浏览器中工作正常,但当我切换到 CLI 脚本时,它似乎没有调用该函数。

我得到的只是“PHP fatal error :未找到类“OffAmazonPaymentsService_Client””。

我已将调试放入 __autoload() 函数中,以回显正在调用的函数和文件路径,并且终端中没有打印任何内容,仅在浏览器中打印。

我已经完成了 print_r(get_define_functions());并且 __autoload() 列在其所在文件的 require_once() 之后,并且之前没有列出,所以我知道它正在获得正确的功能。

我还检查了正在设置的 include_path,它位于 Amazon Payments 源文件夹的根目录中,这是它应该在的位置,因此如果调用 __autoload() ,它没有理由找不到 OffAmazonPaymentsService_Client 类。

谁能告诉我为什么 __autoload() 在 CLI 中不起作用?我没有使用 php -a... 执行

最佳答案

我已将 AmazonPayments PHP SDK 中的 __autoload() 替换为 spl_autoload_register(),并且效果良好。

/*
function __autoload($className){
$filePath = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
$includePaths = explode(PATH_SEPARATOR, get_include_path());
foreach($includePaths as $includePath){
if(file_exists($includePath . DIRECTORY_SEPARATOR . $filePath)){
require_once $filePath;
return;
}
}
}
*/

spl_autoload_register(function($className){
$filePath = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
$includePaths = explode(PATH_SEPARATOR, get_include_path());
foreach($includePaths as $includePath){
if(file_exists($includePath . DIRECTORY_SEPARATOR . $filePath)){
require_once $filePath;
return;
}
}
});

关于php - __autoload() 没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26399223/

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