2017-04-10 7 views
0

私はphpのspl_autoload_registerに関する質問があります。 それはつまり...php spl_autoload_register redaclare

// Use default autoload implementation 
spl_autoload_register(function($class){ 

    //========================================== 
    //use foo => src\store\services\httprequest 
    //========================================== 
    if($class=="foo"){ 
     $class='src\store\services\httprequest'; 
    } 

    $class=root.'/'.$class.'.php'; 

    $class=str_replace("\\","/",$class); 

    require($class); 

}); 

私はクラスで「使用foo」を使用したとき、私は\ spl_autoload_registerはのsrc \ストア\サービスのように利用したいのHttpRequest ...ですが、それはredaclareとして返します。

私はそれを解決できますか?返信用

感謝..

+0

'require'から' require_once' – JustOnUnderMillions

答えて

0

class_exists() - 小切手クラスは、クラスがすでにロードされている場合、最初のチェックに

の変更をあなたのオートローダーを定義し、もしそうなら、それを無視されている場合。問題は、クラスファイルを複数回読み込むと、そのクラスを再試行するということです。

require $classステートメントの直前にこのような処理を行う必要があります。また、自動ロード自体を防止するために、2番目の引数としてfalseを使用することに注意してください。

if (class_exists($class, false)) { 
    return; 
} 

代わりにrequire_onceを使用することもお勧めします。これにより、同じファイルが手動でロードされてロードされるのを防ぐことができます。

関連する問題