首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解autoload和spl_autoload_register

理解autoload和spl_autoload_register
EN

Stack Overflow用户
提问于 2013-03-24 16:46:49
回答 1查看 2.1K关注 0票数 2

我有一个小框架,在我的脚本中我使用autoload (我刚刚意识到我需要开始在我的脚本中删除这个函数)

我现在尝试使用Twilio,在他们的代码中,他们使用spl_autoload_register函数。在调用twilio代码的逻辑块之后,当我对一个类进行新的调用时,脚本的其余部分就会崩溃。

我的文件结构是

代码语言:javascript
复制
/classes/
    autoload.php
    DB_Connect.php

/classes/Twilio/

/sms/Twilio/Services/
    twilo.php

正在崩溃的脚本如下所示

代码语言:javascript
复制
<?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

现在我需要在“类”文件夹中做些什么来使所有的类都工作呢?

EN

回答 1

Stack Overflow用户

发布于 2013-03-24 16:52:01

原因可能是你的自动加载器 is called

如果您的代码有一个现有的__autoload()函数,那么必须在__autoload堆栈上显式地注册这个函数。这是因为spl_autoload_register()将有效地用spl_autoload()或spl_autoload_call()替换__autoload()函数的引擎缓存。

您可以在几秒钟内更新您的脚本,因为只需要稍加修改就可以正确注册自动加载程序。

目前的情况如下:

代码语言:javascript
复制
function __autoload($class) {
    // ...
}

这样修改它(假设您正在运行PHP5.3):

代码语言:javascript
复制
spl_autoload_register(function ($class) {
    // ...
});

在PHP5.3之前,添加它也应该是有效的:

代码语言:javascript
复制
spl_autoload_register('__autoload');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15601174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档