Laravel是怎麽實現autoload的?
阿新 • • 發佈:2017-06-17
body src cti bsp table -1 filesyste cell 文件導入
用了一陣Laravel後發現很少有include和require,覺得有點奇怪,思考Laravel是怎麽完成文件導入的。
其實Laravel依舊還是用include或者require的,只是都寫在一個函數裏了。
就像這樣:
1 2 3 |
function autoload( $path ){
require_once ( $path );
}
|
一般每次導入的PHP文件不只一兩個,會有很多,所以要定義一個數組來存儲“類和PHP文件的映射關系”,就像這樣:
1 2 3 4 5 |
$classmap =[
‘DB‘ => ‘api.php‘ ,
‘FileSystem‘ => ‘api.php‘ ,
‘Session‘ => ‘api.php‘
];
|
然後,對數組進行遍歷,不要再寫for循環了,用一個優雅的函數就可以解決。
1 | array_map ( "autoload" , $classmap ); |
我們來看看真正的Laravel是怎麽定義這個數組的,映射文件在\vendor\composer的autoload_classmap.php裏
Laravel是怎麽實現autoload的?