據我所知
composer是不能載入多
vendor目錄的
但是我看到很多laravel的workbench都可以載入自己vendor檔案
然後通過laravel的php artisan dump-autoload命令載入進來. 我不是很瞭解laravel的機制.
想請laravel的高手解答下!!謝謝
回複內容:
據我所知 composer是不能載入多vendor目錄的
但是我看到很多laravel的workbench都可以載入自己vendor檔案
然後通過laravel的php artisan dump-autoload命令載入進來. 我不是很瞭解laravel的機制.
想請laravel的高手解答下!!謝謝
首先,這個事情跟 Laravel 基本沒有關係。
為什麼很多人在用了 Laravel 之後發現 Laravel 有好多新特性,是因為市面上的代碼、架構都 積重難返,很多 PHP 高手都已經習慣了 PHP4 時代強大的函數和習慣用法,對 PHP 的物件導向新特性又喜歡又不想用,所以當 Taylor Otwell 這個 .NET 程式員看著 PHP 官方文檔發明了 Laravel 的時候,大家都驚呆了,PHP 還能這樣寫!
所以並不是 Laravel 強大,而是 PHP 本身就是非常強大,只是以前沒人這樣用而已。其實話說回來,PHP 本身的語言特性反而是嚴謹古板的,沒法像 Ruby 那樣非常容易地就可以做出一個 DSL(領特定領域語言)。
PHP 的檔案載入機制是非常簡單和自由的,就是 include 'fuck.php';,背後的邏輯也是簡單地把 fuck.php 裡的代碼拷貝過來放到這裡。
為了更方便地引入其他檔案,PHP 引入了 自動載入,官方文檔在:http://php.net/manual/zh/language.oop5.autoload.php
自動載入的邏輯也非常簡單,就是維護一張表,上面寫著哪個類在哪個檔案裡,方便 PHP 解譯器去 include 它。依賴 Composer 的系統通過 include /vendor/autoload.php 這個檔案來維護這張表。這個表可以手動維護。
Laravel 同時支援 psr-0 和 psr-4 自動載入規範,他們的文檔在 http://www.php-fig.org/ 右下角。
針對這個問題,是因為 workbench 這個包修改了 類->檔案 的對應表,增加了幾行。