Laravel是怎么和workbench的composer包兼容的?
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/ 右下角。