我有一个小小的框架,在我的脚本中我使用自动加载(我现在意识到我需要在我的脚本中开始摆脱这个功能)
我现在正在尝试使用Twilio API,在他们的代码中,他们使用spl_autoload_register函数。在我对其中一个类进行新调用时,在脚本的其余部分调用twilio代码的逻辑块之后
我的文件结构是这个
/classes/
autoload.php
DB_Connect.php
/classes/Twilio/
/sms/Twilio/Services/
twilo.php
正在崩溃的脚本看起来像这样
<?php
include(classes/autoload.php);
if($something_is_true){
requrie_once(sms/Twilio/Services/Twilio.php);
//here is where the spl_autoload_register() is called
}
$connection = new DB_Connect();
//script is broken here
我现在需要在Classes文件夹中做些什么来使所有类都有效?
答案 0 :(得分:3)
原因可能是您的自动加载器(__autoload()
) gets completely replaced once spl_autoload_register()
is called:
如果您的代码具有现有的__autoload()函数,则必须在__autoload堆栈上显式注册此函数。这是因为spl_autoload_register()将通过spl_autoload()或spl_autoload_call()有效地替换__autoload()函数的引擎缓存。
您可以在几秒钟内更新脚本,因为只需稍作更改即可正确注册自动加载器。
目前它看起来像这样:
function __autoload($class) {
// ...
}
像这样更改(假设您运行的是PHP 5.3):
spl_autoload_register(function ($class) {
// ...
});
在PHP 5.3之前添加它也应该有效:
spl_autoload_register('__autoload');