spl_autoload_register

(PHP 5 >= 5.1.0, PHP 7)

spl_autoload_registerע������ĺ�����Ϊ __autoload ��ʵ��

˵��

spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool

������ע�ᵽSPL __autoload���������С�����ö����еĺ�����δ����򼤻����ǡ�

�������ij������Ѿ�ʵ����__autoload()��������������ʽע�ᵽ__autoload()�����С���Ϊ spl_autoload_register()�����ὫZend Engine�е�__autoload()����ȡ��Ϊspl_autoload()��spl_autoload_call()��

�����Ҫ���� autoload ������spl_autoload_register() �����˴������� ��ʵ���ϴ����� autoload �����Ķ��У�������ʱ��˳�����ִ�С����֮�£� __autoload() ֻ���Զ���һ�Ρ�

����

autoload_function

��ע����Զ�װ�غ��������û���ṩ�κβ��������Զ�ע�� autoload ��Ĭ��ʵ�ֺ���spl_autoload()��

throw

�˲��������� autoload_function �޷��ɹ�ע��ʱ�� spl_autoload_register()�Ƿ��׳��쳣��

prepend

����� true��spl_autoload_register() ����Ӻ���������֮�ף������Ƕ���β����

����ֵ

�ɹ�ʱ���� TRUE�� ������ʧ��ʱ���� FALSE��

������־

�汾 ˵��
5.3.0 �����������ռ��֧�֡�
5.3.0 ����� prepend ������

����

Example #1 spl_autoload_register() ��Ϊ __autoload() ���������

<?php

// function __autoload($class) {
//     include 'classes/' . $class . '.class.php';
// }

function my_autoloader($class) {
    include 
'classes/' $class '.class.php';
}

spl_autoload_register('my_autoloader');

// ���ߣ��� PHP 5.3.0 �����ʹ��һ����������
spl_autoload_register(function ($class) {
    include 
'classes/' $class '.class.php';
});

?>

Example #2 class δ�ܼ��ص� spl_autoload_register() ����

<?php

namespace Foobar;

class 
Foo {
    static public function 
test($name) {
        print 
'[['$name .']]';
    }
}

spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // �� PHP 5.3.0 ��

new InexistentClass;

?>

�������̵���������ڣ�

[[Foobar\InexistentClass]]
Fatal error: Class 'Foobar\InexistentClass' not found in ...

�μ�

  • __autoload() - ���Լ���δ�������