1. 程式人生 > >PHP 的魔術方法

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;
?>