本次我们主要一块儿折腾一下
laravel (5.4)
的环境搭建
和解读核心目录文件
的作用
环境搭建
官方对 laravel 配置要求如下:
- PHP >= 5.64
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
这次我们的实验环境为(本次没有准备服务器软件,可以通过 ssh 隧道去实现本地浏览
):
- CentOS release 6.8 (Final)
- PHP 7.1.2 (配置如上扩展)
- MySQL 5.6.27
- Composer 1.4.2
安装 Laravel
laravel
使用 Composer
来管理代码依赖。所以,在使用 laravel 之前,请确保服务器上安装了 Composer
首先,使用 composer 下载 Laravel 安装包:
新建项目:
由于 本次没有准备服务器软件,可以通过 ssh 隧道去实现本地浏览
,所以可以通过直接通过 laravel 启动 server,然后通过 http://localhost:8000
访问:
核心目录文件介绍
根目录
app 目录
~ 如你所料,这里面包含应用程序的核心代码。另外,你为应用编写的代码绝大多数也会放到这里, 我们之后将很快对这个目录的细节进行深入探讨
bootstrap 目录
~ 包含了几个框架启动和自动加载设置的文件。cache 文件夹
用于包含框架为提升性能所生成的文件,如路由和服务缓存文件
config 目录
顾名思义,包含所有应用程序的配置文件。通读这些配置文件可以应对自己对配置修改的需求
database 目录
包含了数据迁移及填充文件,你还可以将其作为 SQLite 数据库的存放目录
public 目录
包含了 Laravel 的 HTTP 入口文件 index.php 和前端资源文件(图片、JavaScript、CSS等)
resources 目录
包含了视图、原始的资源文件 (LESS、SASS、CoffeeScript) ,以及语言包
routes 目录
包含了应用的所有路由定义。Laravel 默认提供了三个路由文件:web.php
、 api.php
和 console.php
- web.php 文件里定义的路由都会在 RouteServiceProvider 中被指定应用到 web 中间件组,具备 Session 、CSRF 防护以及 Cookie 加密功能,如果应用无需提供无状态的、RESTful 风格的API,所有路由都会定义在 web.php 文件
- api.php 文件里定义的路由都会在 RouteServiceProvider 中被指定应用到 api 中间件组,具备频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过 API 令牌进行认证并且不能访问 Session 状态
- console.php 文件用于定义所有基于闭包的控制台命令,每个闭包都被绑定到一个控制台命令并且允许与命令行 IO 方法进行交互,尽管这个文件并不定义 HTTP 路由,但是它定义了基于命令行的应用入口(路由)
storage 目录
包含编译后的 Blade 模板、基于文件的 session、文件缓存和其它框架生成的文件。此文件夹分格成 app
、framework
,及 logs
目录。app 目录可用于存储应用程序使用的任何文件。framework 目录被用于保存框架生成的文件及缓存。最后,logs
目录包含了应用程序的日志文件;storage/app/public
可以用来存储用户生成的文件,例如头像文件,这是一个公开的目录。你还需要在 public/storage
目录下生成一个软连接指向这个目录,你可以使用 php artisan storage:link 来创建软链接
tests 目录
包含自动化测试。Laravel 推荐了一个 PHPUnit 例子。每一个测试类都需要添加 Test
前缀,你可以使用 phpunit
或者 php vendor/bin/phpunit
命令来运行测试
vendor 目录
包含所有 Composer
依赖
app目录
此目录主要存储项目的核心代码,默认情况下,该目录位于命名空间
App
下,并且被 Composer 通过 PSR-4 自动载入标准自动加载。app 目录下包含多个子目录,如
Console
、Http
、Providers
等。其中Console
和Http
目录为进入应用程序核心提供了一个 API。HTTP协议 和 CLI 是和应用进行交互的两种机制,但实际上并不包含应用逻辑。Console
目录包含你所有Artisan
命令,而Http
目录包含控制器、中间件和请求处理。其他目录将会通过
Artisan make
命令生成相应类到app
目录下。举个栗子,app/Jobs
目录在执行make:job
命令生成任务类时才会出现在 app 目录下。(查看所有有效的命令,可以运行php artisan list make
查看)
Console 目录
含应用所有自定义的 Artisan
命令,这些命令类可以使用 make:command
命令生成。该目录下还有 Console Kernel
类,在这里可以注册自定义的 Artisan
命令以及定义调度任务
Events 目录
默认不存在,它会在你使用 event:generate
或者 event:make
命令以后才会生成。如你所料,此目录是用来放置 事件类 的。事件类用于当指定事件发生时,通知应用程序的其它部分,并提供了很棒的灵活性及解耦
Exceptions 目录
包含应用的异常处理,同时还是处理应用抛出的任何异常的好位置。如果你想自定义异常的记录和渲染,你应该修改此目录下的 Handler 类
Http 目录
包含了控制器、中间件以及表单请求等
Jobs 目录
默认不存在,可以通过执行 make:job
命令生成,Jobs
目录用于存放 队列任务,应用中的任务可以推送到队列,也可以在当前请求生命周期内同步执行。同步执行的任务有时也被看作命令,因为它们实现了 命令总线设计模式
Listeners 目录
默认不存在,可以通过执行 event:generate
和 make:listener
命令创建。Listeners
目录包含处理 事件 的类(事件监听器),事件监听器接收一个事件并提供对该 事件发生后的响应逻辑,举个栗子,UserRegistered
事件可以被 SendWelcomeEmail
监听器处理
Mail 目录
默认不存在,但是可以通过执行 make:mail
命令生成,Mail
目录包含邮件发送类,邮件对象允许你在一个地方封装构建邮件所需的所有业务逻辑,然后使用 Mail::send
方法发送邮件
Notifications 目录
默认不存在,你可以通过执行 make:notification
命令创建,包含应用发送的所有通知,比如事件发生通知。Laravel 的通知功能将通知发送和通知驱动解耦,你可以通过邮件,也可以通过 Slack、短信或者数据库发送通知
Policies 目录
以通过执行 ·make:policy· 命令来创建, ·Policies· 目录包含了所有的授权策略类,策略用于判断某个用户是否有权限去访问指定资源,授权系统
Providers 目录
包含应用的 服务提供者 。服务提供者在启动应用过程中绑定服务到容器、注册事件,以及执行其他任务,为即将到来的请求处理做准备
本文作者: wettper
本文链接: http://www.web-lovers.com/laravel-from-entry-to-abandon-2.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!