PHP 的魔术方法

一、__autoload  尝试加载未定义的类

void __autoload (string $class)   $class 待加载的类名 

没有返回值

在php.net 的tip中写到: 尽管__autoload 函数也能自动加载类和接口,但更建议使用spl_autoload_register()函数。spl_autoload_register提供了一种更加灵活的方式来实现类的自动加载(同一个应用中,可以支持任意数量的加载器,比如第三方库中的)。因此,不在建议使用__autoload()函数,在以后的版本中它可能会被弃用。

实例一:使用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';
});

 实例二:class未能加载的spl_autoload_register() 例子

<?php 
namespace Foobar;

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

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

new InexistentClass;
?>

猜你喜欢

转载自www.cnblogs.com/weqqtk/p/10182856.html