Zend中的spl_autoload_register

时间:2014-06-04 13:26:49

标签: php zend-framework twilio

我目前正在尝试使用使用spl_autoload_register包含其类的Twilio PHP库。

function Services_Twilio_autoload($className) {
    if (substr($className, 0, 15) != 'Services_Twilio') {
        return false;
    }
    $file = str_replace('_', '/', $className);
    $file = str_replace('Services/', '', $file);
    return include dirname(__FILE__) . "/Twilio.php";
}

spl_autoload_register('Services_Twilio_autoload');

我抛出这段代码:

require_once('Library/Services/Twilio.php');

$client = new Services_Twilio($this->sid, $this->token);

然后运行时出现此错误:

Fatal error: Cannot redeclare Services_Twilio_autoload() (previously declared in ...\Twilio\Library\Services\Twilio.php:9) in ... \Twilio\Library\Services\Twilio.php on line 16

此代码在Zend上运行,并且已经有一个带有_initAutoload()的引导程序。我不知道我应该在哪里或如何为这个库实现自动加载,因为我对它不是很熟悉。

1 个答案:

答案 0 :(得分:1)

我想我已经重现了这个问题。

要纠正它,我只需在引导程序中添加require_once('Services/Twilio.php');,如下所示:

require_once('Services/Twilio.php');

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{    
  ....

就我而言,我将Services目录放在library目录中(Zend目录所在的位置)。

在控制器中,我可以像你一样打电话给Services_Twilio

$client = new Services_Twilio($this->sid, $this->token);

我希望它会对你有所帮助。 :)