PHP 的魔術方法
阿新 • • 發佈:2018-12-27
一、__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; ?>