本系列是学习laravel文档的一个记录,之前已经用laravel协助在完成项目,但是使用过程中觉得很不顺手,因为太多我不会的东西了,现在有空了就专门来学习一下laravel;
1 安装laravel
详情参考laravel文档,一下是安装是需要注意的地方:
(1)需要按照要安装的版本配置好php的版本,如果是使用的类似于phpStudy之类的集成环境,记得修改版本后同时也要修改环境变量,注意按照文档要求开启扩展;
(2)创建项目:使用composer: composer create-project –prefer-dist laravel/laravel blog;
(3)运行:执行以下命令程序可以直接跑起来:php artisan serve
2 配置
Apache开启mod_rewrite模块,laravel框架可以直接通过laravel/.htaccess来运行;laravel的配置文件都在config文件夹下;
获取环境变量:使用辅助函数:

‘debug’ => env(‘APP_DEBUG’, false),

第二个参数是默认值,如果找不到对应环境变量的配置就会直接设置为默认值;
维护模式:当处于维护模式的时候,所有传递至应用程序的请求都会显示出一个自定义视图,启用维护模式:

php artisan down

可以指定down的message和retry选项,message自定义显示给用户的信息,retry作为Retry-after http标头返回:

php artisan down –message=’Upgrading Database’ –retry=60

关闭维护模式使用artisan命令up:

php artisan up;

3 文件夹结构
app目录:包含应用程序的核心代码;
bootstrap目录:包含了框架启动和自动加载设置的文件,cache文件夹为包含框架为提升性能所生成的文件,如路由和服务缓存文件;
config目录:包含所有应用程序的配置文件;
database目录:包含了数据库迁移及填充文件,还可以将其作为SQLite数据库的存放目录;
public目录:目录包含了laravel的http入口文件index.php和前端资源文件(图片,javascript,css)
resources目录:包含了视图,原始的资源文件(less,sass,CoffeScript)以及语言包;
routes目录:包含了应用的所有路由定义,laravel默认提供了三个路由文件web.php,api.php,console.php
(1)web.php定义的路由都会在ResourceServerProvider被指定到web中间件组,具备session,SSRF防护以及cookie加密功能,如果应用须提供无状态的,Restful风格的api,所有路由都会被定义在web.php里面;
(2)api.php 文件里定义的路由都会在 RouteServiceProvider 中被指定应用到 api 中间件组,具备频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过 API 令牌进行认证并且不能访问 Session 状态。
(3)console.php 文件用于定义所有基于闭包的控制台命令,每个闭包都被绑定到一个控制台命令并且允许与命令行 IO 方法进行交互,尽管这个文件并不定义 HTTP 路由,但是它定义了基于命令行的应用入口(路由)。
storage目录:目录包含编译后的 Blade 模板、基于文件的 session、文件缓存和其它框架生成的文件。此文件夹分格成 app 、framework ,及 logs 目录。app 目录可用于存储应用程序使用的任何文件。framework 目录被用于保存框架生成的文件及缓存。最后,logs 目录包含了应用程序的日志文件。
storage/app/public 可以用来存储用户生成的文件,例如头像文件,这是一个公开的目录。你还需要在 public/storage 目录下生成一个软连接指向这个目录,你可以使用 php artisan storage:link 来创建软链接。
test目录:tests 目录包含自动化测试。Laravel 推荐了一个 PHPUnit 例子。每一个测试类都需要添加 Test 前缀,你可以使用 phpunit 或者 php vendor/bin/phpunit 命令来运行测试。
app目录详细介绍:
Console 和 Http 目录为进入应用程序核心提供了一个 API 。HTTP 协议和 CLI 是和应用进行交互的两种机制,但实际上并不包含应用逻辑。换句话说,它们是两种简单地发布命令给应用程序的方法。Console 目录包含你全部的 Artisan 命令,而 Http 目录包含你的控制器、中间件和请求。
其他目录将会在你通过 Artisan 命令 make 生成相应类的时候生成到 app 目录下。例如,app/Jobs 目录在你执行 make:job 命令生成任务类时,才会出现在 app 目录下。
(1)app-console目录:Console 目录包含应用所有自定义的 Artisan 命令,这些命令类可以使用 make:command 命令生成。该目录下还有 Console Kernel 类,在这里可以注册自定义的 Artisan 命令以及定义调度任务。
(2)app-Events目录:Events 目录默认不存在,它会在你使用 event:generate 或者 event:make 命令以后才会生成。如你所料,此目录是用来放置 事件类 的。事件类用于当指定事件发生时,通知应用程序的其它部分,并提供了很棒的灵活性及解耦。
(3)app-Exceptions目录:Exceptions 目录包含应用的异常处理,同时还是处理应用抛出的任何异常的好位置。如果你想自定义异常的记录和渲染,你应该修改此目录下的 Handler 类。
(4)app-Http目录:Http 目录包含了控制器、中间件以及表单请求等,几乎所有进入应用的请求处理都在这里进行。
(5)app-Jobs目录:Jobs 目录默认不存在,可以通过执行 make:job 命令生成,Jobs 目录用于存放 队列任务,应用中的任务可以推送到队列,也可以在当前请求生命周期内同步执行。同步执行的任务有时也被看作命令,因为它们实现了 命令总线设计模式。
(6)app-Listeners目录:Listeners 目录默认不存在,可以通过执行 event:generate 和 make:listener 命令创建。Listeners 目录包含处理 事件 的类(事件监听器),事件监听器接收一个事件并提供对该 事件发生后的响应逻辑,例如,UserRegistered 事件可以被 SendWelcomeEmail 监听器处理。
(7)app-mail目录:Mail 目录默认不存在,但是可以通过执行 make:mail 命令生成,Mail 目录包含邮件发送类,邮件对象允许你在一个地方封装构建邮件所需的所有业务逻辑,然后使用 Mail::send 方法发送邮件。
(8)app-notifications目录:Notifications 目录默认不存在,你可以通过执行 make:notification 命令创建, Notifications 目录包含应用发送的所有通知,比如事件发生通知。Laravel 的通知功能将通知发送和通知驱动解耦,你可以通过邮件,也可以通过 Slack、短信或者数据库发送通知。
(9)app-policies目录:Policies 你可以通过执行 ·make:policy· 命令来创建, ·Policies· 目录包含了所有的授权策略类,策略用于判断某个用户是否有权限去访问指定资源
(10)app-providers目录:Providers 目录包含应用的 服务提供者 。服务提供者在启动应用过程中绑定服务到容器、注册事件,以及执行其他任务,为即将到来的请求处理做准备。