php5.3 读取目录,「Laravel 5.3 中文文档」开始 – 目录结构

简介

Laravel 的目录结构想为无论大小应用都提供一个好的开端。当然,你可以根据自己的喜好来随意组织目录结构,Laravel 对于类放置在什么地方没有做任何强制的限制 – 只要 Composer 可以自动加载它就可以。

模型目录在哪?

当最初使用 Laravel 的时候,很多开发者都会疑问 models 目录在哪。其实,没有这个目录是有意为之。我们发现“models”这个词是有歧义的,对于不同的人意味着很多不同的东西。有些开发者会把“model ”看作整个的业务逻辑,而另一个则会把“models”看作与关系数据库交互的类。

基于这一点考虑,我们把 Eloquent 模型放置在了 app 目录下,并允许开发者根据自己的选择把它们放到任何地方。

根目录

App 目录

app 目录,如你所料,包含了应用所有的核心代码。后面我们会对这个目录做更详细的介绍,然而,你的应用几乎所有的类都会位于这个目录下。

Bootstrap 目录

bootstrap 目录包含了启动框架及配置自动加载的文件。该目录可能也会包含一个 cache 目录,其中会包含框架为优化性能而生成的一些文件,如路由及 Services 的缓存文件。

Config 目录

config 目录,顾名思义,包含了应用所有的配置文件。阅读所有的这些文件并熟悉所有的配置项,对你来说是一个很好的建议。

Datebase 目录

database 目录包含了数据迁移及填充的文件。如果你愿意,也可以把其作为 SQLite 数据库的存放目录。

Public 目录

public 目录包含了 index.php 文件,它是进入你应用的所有请求的入口。这个目录也可以放置一些资源文件,如图片、JavaScript、CSS 等。

Resources 目录

resource 目录包含了你的视图及原始的、未编译的资源文件,如 LESS、SASS 或 JavaScript 等,以及所有的语言包。

Routes 目录

routes 目录包含了应用所有的路由文件。默认包含两个 Laravel 的路由文件:web.php 和 api.php。web.php 包含的路由位于 RouteServiceProvider 下 web 中间件组中,提供了 session 状态、CSRF 保护以及 cookie 保护。如果你的应用不提供无状态的、RESTful API,那么你的路由几乎都会定义在 web.php 中。

api.php 包含了 RouteServiceProvider 下 api 中间件组中的路由,提供了访问限制。这些路由是无状态的,所以通过这些路由进入应用的请求需要通过 token 来进行认证,并且不会有 session 状态。

Storage 目录

storage 目录包含了编译的 Blade 模板,基于 session 的文件、缓存文件以及框架生成的其他文件。这个目录又包含 app、 framework 和 logs 文件夹。app 目录可以用来存放应用生成的任何文件,framework 目录用来存放框架生成的文件及缓存文件,logs 目录包含了应用的日志文件。

storage/app/public 目录可以用来存放用户生成的文件,如用户头像,可以公开访问。你需要给 public/storage 创建一个软链接指向这里,这个软链接你可以通过 php artisan storage:link 命令来创建。

Tests 目录

tests 目录包含了自动化测试的文件,提供了一个开箱即用的 PHPUnit 实例。每一个测试类都需要以 Test 结尾。你可以通过 phpunit 或 php vendor/bin/phpunit 命令来进行测试。

Vendor 目录

vendor 目录包含了 Composer 依赖。

App 目录

应用程序的核心代码都位于 app 目录下。默认情况下,这个目录位于 App 命名空间下,并使用 PSR-4 自动标准由 Composer 自动加载。

app 目录包含了多个额外的文件夹,如 Console、Http、Providers 等。可以将 Console 和 Http 目录作为进入应用核心的 API。提供了 HTTP 协议及 CLI 命令行两种应用进行交互的机制,但实际上并不包含应用逻辑。换句话说,它们只是两个向应用发布命令的方式。Console 目录包含了所有的 Artisan 命令,而 Http 目录包含了控制器、中间件及请求。

当你使用 make Artiasn 命令生成类的时候,app 目录下会生成多个文件夹。例如,app/Jobs 目录本身是不存在的,直到你使用 make:job Artisan 命令来生成任务的时候才会创建。

app 目录下的很多类都可以通过 Artisan 命令来生成。可以通过在终端运行 php artisan list make 命令查看所有提供的命令。

Console 目录

Console 目录包含了所有的 Artisan 命令。这些命令可以通过 make:command 命令生成。这个目录也存放着 console 内核,即所有 Artisan 命令注册的地方,以及所有定时任务定义的地方。

Events 目录

这个目录默认是不存在的,但当你执行 event:generate 和 event:make Artisan 命令的时候就会创建。Events 目录,如你所想,是用来存放事件类的。事件可以用于提示应用的其他部分某个指定的行为已经发生,提供一个灵活、解耦的方案。

Exceptions 目录

Exceptions 包含了程序的异常处理器,以及作为存放你应用抛出的异常的地方。如果你想自定制异常如何记录及渲染,你可以更改该目录下的 Handler 类。

Http 目录

Http 目录包含了你的控制器、中间件以及表单请求。几乎所有进入应用的请求的处理逻辑都会在该目录下。

Listeners 目录

这个目录默认也是不存在的,但当你执行 event:generate 或 make:listener Artisan 命令的时候就会创建。Listeners 目录包含了处理事件的类。事件监听器会接收事件,并对其进行逻辑处理。例如,UserRegistered 事件可能会被 SendWelcomeEmail 监听器处理。

Mail 目录

这个目录默认也不存在,当执行 make:mail Artisan 命令时将会生成。Mail 包含了应用程序发送邮件所有的类。Mail 对象允许你在一个简单的类中包含创建邮件所有的逻辑,并使用 Mail::send 命令来发送。

Notifications 目录

这个目录也不存在,当你执行 make:notification Artisan 命令时将会创建。Notifications 目录包含了应用发送的所有通知,如应用中事件已经发生的简单通知。Laravel 的通知通过多种方式如邮件、Slack、SMS 或存储到数据库中,来抽象的发送通知。

Policies 目录

这个目录当你执行 make:policy Artisan 命令时才会创建。Policies 目录包含了应用授权的 policy 类。Policies 会检查用户能否对某个资源进行指定的操作。了解更多信息,请查看 授权 文档。

Providers 目录

Providers 包含了应用的服务提供者 service providers。服务提供者通过绑定服务到你的服务容器来驱动你的应用、注册事件、或执行其他任务来为进入应用的请求做准备。

在一个新的 Laravel 应用中,这个目录就已经包含了服务提供者,你可以根据需要向这个目录添加自己的服务提供者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值