laravel framework目录结构

说明

这篇文章是我梳理的laravel framework 5.8版本的目录结构说明,有助于理解laravel。

源代码:https://github.com/laravel/framework/tree/5.8
API:https://laravel.com/api/5.8/index.html
我下载的包:https://github.com/laravel/framework/archive/v5.8.35.zip

组件

Illuminate\Auth
Illuminate\Broadcasting
Illuminate\Bus
Illuminate\Cache
Illuminate\Config
Illuminate\Console
Illuminate\Container
Illuminate\Cookie
Illuminate\Database
Illuminate\Encryption
Illuminate\Events
Illuminate\Filesystem
Illuminate\Hashing
Illuminate\Http
Illuminate\Log
Illuminate\Mail
Illuminate\Notifications
Illuminate\Pagination
Illuminate\Pipeline
Illuminate\Queue
Illuminate\Redis
Illuminate\Routing
Illuminate\Session
Illuminate\Translation
Illuminate\Validation
Illuminate\View

组件的中间件放到Middleware目录中,例如Auth组件提供的中间件都会放到Illuminate\Auth\Middleware下,HTTP组件提供的中间件会放到Illuminate\Http\Middleware下。

组件自己的服务提供者放到组件根目录中,例如Illuminate\Log\LogServiceProvider、Illuminate\Mail\MailServiceProvider等。

Illuminate\Contracts

为了解耦和对框架组件的约束,框架分出来一个目录来放组件的interface,翻译成中文为合同、契约。

Illuminate\Foundation

这个目录存储的东西比较杂,是对上面组件的实际使用,就是说像容器啊、服务提供者啊,等等,真正的结合使用起来了,比如:

Illuminate\Foundation\Bootstrap目录下存放了初始化框架的一些类,有初始化服务提供者的,有初始化加载配置文件的,有注册facade的,等等。
像Illuminate\Foundation\Application这个类,继承了容器组件中的类,加入了框架中的一些逻辑,比如中间件啊、服务提供者啊等一些逻辑,形成了框架中贯穿整个请求生命周期的容器。
还有Illuminate\Foundation\helper.php,结合各种组件和容器,提供了各种各样的好用的方法。

Illuminate\Support

Illuminate\Support(səˈpôrt),这个目录存储的是一些支持性质的文件。

Illuminate\Support\Facades目录下放的是各种各样的facade类,比如App.php、Cache.php、Event.php,正因为有这些门面类的存在,才得以让我们在laravel中以门面的方式使用这些类,例如App.php文件是容器的门面,该门面类中的方法返回了容器实例在容器中的服务名称,那么就可以通过门面的方式调用该容器类的方法,例如 \App::version();

Illuminate\Support\Traits下是一些trait类。

还有像helpers.php、HtmlString.php、Str.php对一些方法的封装 ,ConfigurationUrlParser.php、Composer.php分别对不同数据库URL规则的处理和composer命令的处理。

以上就是我对laravel framework目录划分的一些理解。

发布了116 篇原创文章 · 获赞 12 · 访问量 99万+

猜你喜欢

转载自blog.csdn.net/u012628581/article/details/102557778