SPL 函数
在线手册:中文 英文
PHP手册

spl_autoload_unregister

(PHP 5 >= 5.1.2)

spl_autoload_unregister注销已注册的__autoload()函数

说明

bool spl_autoload_unregister ( mixed $autoload_function )

从spl提供的自动装载函数栈中注销某一函数。如果该函数栈处于激活状态,并且在给定函数注销后该栈变为空,则该函数栈将会变为无效。

如果该函数注销后使得自动装载函数栈无效,即使存在有__autoload函数它也不会自动激活。

参数

autoload_function

要注销的自动装载函数。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE.


SPL 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: 注销已注册的__autoload()函数

用户评论:

hafees dot s at gmail dot com (16-Feb-2012 12:13)

class ClassAutoLoader {

    public function __construct() {
        $this->register('__autoload');
    }

    public function register($autoLoadHandler) {
        if (is_callable($autoLoadHandler)) {
            spl_autoload_register($autoLoadHandler);
        }
    }
   
    public function unregister($autoLoadHandler) {
        spl_autoload_unregister($autoLoadHandler);
    }

    public function getAutoLoadHandlers () {
        return spl_autoload_functions();
    }
}

$autoLoader = new ClassAutoLoader();

Eg:
$autoLoader->register('myHandlerFunc');
$autoLoader->unregister('myHandleFunc');

Julien B. (07-Jul-2009 05:31)

Restore the binding to __autoload after using a spl_autoload_register() call

<?php
spl_autoload_register
(array('Doctrine', 'autoload'));

// some process

spl_autoload_unregister(array('Doctrine', 'autoload'));

// but now the old __autoload is not triggered anymore
// you need to use :
spl_autoload_register('__autoload');

// but this will throw a LogicExeption if the __autoload
// function is not defined yet, so use:
function autoload__ ( $className ) {
    if (
function_exists('__autoload'))
       
__autoload($className);
}

spl_autoload_register('autoload__');

?>

So you can define your old __autoload in another file for example

May helps some folks in this catch 22