class Manage
{
spl_autoload_register(function($class) {
include $class . '.class.php';
});
}
說我有一些類似上面的代碼。我選擇使用加載類的匿名函數方法,但這是如何使用的?它究竟如何確定要加載哪個'$class'
?如何使用spl_autoload_register?
class Manage
{
spl_autoload_register(function($class) {
include $class . '.class.php';
});
}
說我有一些類似上面的代碼。我選擇使用加載類的匿名函數方法,但這是如何使用的?它究竟如何確定要加載哪個'$class'
?如何使用spl_autoload_register?
您不能將代碼放在那裏。你應該在課後添加SPL註冊。如果你想註冊Manage
類中的功能,你可以這樣做:
class Manage {
public static function autoload($class) {
include $class . '.class.php';
}
}
spl_autoload_register(array('Manage', 'autoload'));
然而,正如你證明,你可以使用匿名函數。你甚至都不需要一個類,所以你可以這樣做:
spl_autoload_register(function($class) {
include $class . '.class.php';
});
無論哪種方式,您所指定的功能被添加到了負責自動加載功能的游泳池。你的函數被附加到這個列表中(所以如果列表中有任何東西,你的將會是最後的)。有了這個,當你做這樣的事情:
UnloadedClass::someFunc('stuff');
PHP會認識到,UnloadedClass尚未宣佈。然後它將遍歷SPL自動加載函數列表。它將用一個參數調用每個函數:'UnloadedClass'
。然後在每個函數被調用後,它會檢查該類是否存在。如果沒有,它會一直持續到列表結束。如果該類從未加載過,則會有一個致命錯誤,告訴您該類不存在。
你的代碼有誤。將'sql_autoload_register'放在'Manage'類之外,或者將它放在一個方法中。 – xdazz
@zerkms今天OP和他們的犯規口是什麼?爲什麼他們總是攻擊mods? –
你應該做的第一件事是在發佈之前先對你的代碼進行語法錯誤檢查。 – hakre