2

我有一个小的框架,在我的脚本中我使用自动加载(我现在才知道我需要开始在我的脚本中摆脱这个功能)

我现在正在尝试使用 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 文件夹中做什么才能使所有类都正常工作?

4

1 回答 1

3

原因可能是你的自动加载器__autoload())被完全替换一次spl_autoload_register()被调用

如果您的代码具有现有的 __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');
于 2013-03-24T16:52:01.803 回答