我正在使用Amazon Payments PHP SDK并且__autoload()在浏览器中工作正常但是当我切换到我的CLI脚本时,它似乎似乎没有调用该函数。
所有我得到的是“PHP致命错误:类'OffAmazonPaymentsService_Client'未找到”。
我已将调试放入__autoload()函数以回显被调用的函数和文件路径,并且终端中没有任何内容,只需在浏览器中打印。
我做了一个print_r(get_defined_functions());和__autoload()列在它所在的文件的require_once()之后,并且之前没有列出,因此我知道它正在获得正确的功能。
我还检查了正在设置的include_path,它位于Amazon Payments源文件夹的根目录中,这是应该的位置,所以如果调用__autoload(),它就没有理由找不到OffAmazonPaymentsService_Client类。< / p>
有人可以建议为什么__autoload()不能在CLI中运行吗?我没有用php -a ...
执行答案 0 :(得分:0)
我已经使用spl_autoload_register()替换了AmazonPayments PHP SDK中的__autoload()并且已经有效。
/*
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;
}
}
});