Composer做爲PHP的包管理工具,爲PHPer們提供了豐富的類庫,而且讓PHP重煥新生,避免被時代淘汰的悲劇。能夠說,Composer和PHP7是如今PHP開發者的標配,若是你還沒用過Composer或者在PHP7的環境下工做,那麼還真是有點落伍了哦!php
此次的系列文章將一步步的解析Composer原理,不會去講解Composer的命令或者如何使用,這方面的內容您能夠穩步Composer中文網:www.phpcomposer.com/git
<?php
$m = new TestClass();
$m->show();
function __autoload($className) {
require $className . '.php';
}
複製代碼
學習編程,第一步必定是把代碼敲下來,請新建一個文檔叫做autoload.php,並把上面的代碼複製進去。github
而後在同級目錄新建一個TestClass.php文件,將如下代碼放入TestClass.php中:算法
<?php
class TestClass {
public function show() {
echo 'we are family!';
}
}
複製代碼
接下來,你能夠經過網頁形式訪問autoload.php,或者我更推薦的直接在命令行運行:php ./autoload.php編程
神奇的事情發生了,咱們並無在autoload.php上方顯式的使用 require() 和 include 之類的函數,而是在__autoload()中使用了 require $className . '.php'; 這段語句,就完成了TestClass.php文件的加載。composer
沒錯,我估計您也猜到了,__autoload()這個魔術方法的做用就是在調用的類若是沒有加載的狀況下,就進入到這個方法中。機器學習
嘗試加載未定義的類函數
__autoload( string $class ) : void工具
這個方法在PHP7.2後會提示DEPRECATED,在將來的版本中可能會刪除。咱們將再下一篇文章中講解的spl_autoload_register()函數將是自動加載的將來。使用自動加載函數的好處:不須要在文件頂部一大串的require。學習
嗯,已經瞭解了__autoload()是幹嗎的,可是這和Composer有什麼關係?
別急,任何牛X的技術總有一個基礎,沒有這個條件這項技術就很難實現,就像人工智能,雖然早就有了各類算法和理論,但在大數據技術怒放以前老是沒法落地。由於機器學習須要的大量數據如何存取實在是個難點。在這裏,Composer就像是AI技術,而__autoload()方法就是那個基石。
完整源碼:GitHub