laravel框架简单总结

01

什么是 laravel

Laravel 是 Taylor Otwell 开发的一款基于 PHP 语言的 Web 开源框架,采用了 MVC 的架构模式。
由于 Laravel 具备 Rails 敏捷开发等优秀特质,深度集成 PHP 强大的扩展包(Composer)生态,让 Laravel 在发布之后的短短几年时间得到了极其迅猛的发展。
laravel 在过去七年成长速度,在 php 框架自 有史以来也是最快的。

02

路由

laravel 的路由也是自身框架的一个特征点,它的路由样式用法丰富且又简洁明了。让开发者甚是喜欢。接下来讲解的每个模块,都是为了刚接触 laravel 框架的开发者 更容易搞懂 laravel 全局核心要点。以及方便熟悉laravel 的开发者进行参考。

  1. 路由器允许响应任何 HTTP 请求的路由
    Route::get($uri, c a l l b a c k ) ; R o u t e : : p o s t ( callback); Route::post( callback);Route::post(uri, c a l l b a c k ) ; R o u t e : : p u t ( callback); Route::put( callback);Route::put(uri, c a l l b a c k ) ; R o u t e : : p a t c h ( callback); Route::patch( callback);Route::patch(uri, c a l l b a c k ) ; R o u t e : : d e l e t e ( callback); Route::delete( callback);Route::delete(uri, c a l l b a c k ) ; R o u t e : : o p t i o n s ( callback); Route::options( callback);Route::options(uri, $callback);

  2. 有时候一个响应多个 Http 请求,这时候使用 match 方法,也可以使用any 方法,any 方法可以实现响应所有 HTTP 请求的路由。
    Route::match([‘get’, ‘post’], ‘/’, function () {
    //支持两种方法
    });

Route::any(‘foo’, function () {
//可以接收所有的方法
});

  1. 访问控制(节流)
    Laravel 包含了一个 middleware 用于控制应用程序对路由的访问。如果想要使用, 请将 throttle 中间件分配给一个路由或者一个路由组。throttle 中间件会接收两个参数,这两个参数决定了在给定的分钟数内可以进行的最大请求数。例如,让我们指定一个经过身份验证并且用户每分钟访问频率不超过 60 次的路由组:
    Route::middleware(‘auth:api’, ‘throttle:60,1’)->group(function () {
    Route::get(’/user’, function () {
    //
    });
    });

  2. 路由缓存/清理
    (注:基于闭包的路由无法被缓存。要使用路由缓存,你需要将代码从闭包转移到控制器类中)
    如果您的应用程序只使用了基于控制器的路由,那么您应该利用 Laravel 的路由缓存。路由缓存会大大减少注册所有路由所需的时间。在某些情况下,路由注册的速度甚至能快上 100 倍。要生成路由缓存,只需执行 artisan 命令
    php artisan route:cache
    运行此命令后,将在每个请求上加载缓存的路由文件。记住,如果添加了任何新的路由,则需要重新生成新的路由缓存。因此,您应该在项目部署的时候运行 route:cache 命令。
    您可以使用 route:clear 命令来清除路由缓存:
    php artisan route:clear

03

中间件

laravel 的中间件想必大家不会那么陌生吧。它自带了一些中间件。如果大家想具体知道 laravel 具体启动哪些中间件,我们是可以通过 app\Http\Kernel.php 文件查看的。对于以\App\Http\Middleware\ 头的中间件(位于 app/Http/Middleware 目录)是我们可以对其行为进行定制的中间件。

下面我也会讲一些中间件,介绍它的项目文件、地址、以及作用,方便大家查找参考。
(1)Authenticate 中间件
源文件:app\Http\Middleware\Http\Middleware\Authenticate.php
作用:用户身份验证。可修改 redirectTo 方法,返回未经身份验证的用户应该重定向到的路径。

(2)CheckForMaintenanceMode 中间件
源文件:app\Http\Middleware\CheckForMaintenanceMode.php
作用:检测项目是否处于 维护模式。可通过 $except 数组属性设置在维护模式下仍能访问的网址。

(3)EncryptCookies 中间件
源文件:app\Http\Middleware\EncryptCookies.php
作用:对 Cookie 进行加解密处理与验证。可通过 $except 数组属性设置不做加密处理的 cookie。

(4)RedirectIfAuthenticated 中间件
源文件:app\Http\Middleware\RedirectIfAuthenticated.php
作用:当请求页是 注册、登录、忘记密码 时,检测用户是否已经登录,如果已经登录,那么就重定向到首页,如果没有就打开相应界面。可以在 handle 方法中定制重定向到的路径。

(5)TrimStrings 中间件
源文件:app\Http\Middleware\TrimStrings.php
作用:对请求参数内容进行 前后空白字符清理。可通过 $except 数组属性设置不做处理的参数。

(6)TrustProxies 中间件
源文件:app\Http\Middleware\TrustProxies.php
作用:配置可信代理。可通过 p r o x i e s 属 性 设 置 可 信 代 理 列 表 , proxies 属性设置可信代理列表, proxiesheaders 属性设置用来检测代理的 HTTP 头字段。

(7)VerifyCsrfToken 中间件
源文件:app\Http\Middleware\VerifyCsrfToken.php
作用:验证请求里的令牌是否与存储在会话中令牌匹配。可通过 $except 数组属性设置不做 CSRF 验证的网址。

04

laravel 迁移/队列

  1. 迁移
    可以利用 raw() 语句来执行原生 SQL :
    $table->timestamp(‘created_at’)->default(DB::raw(‘CURRENT_TIMESTAMP’));
    以上这种用法适用于 Laravel 官方支持的所有数据库驱动器。
    自 Laravel 5.1.25 以后,可以使用 useCurrent() ,如下:
    $table->timestamp(‘created_at’)->useCurrent();

  2. 队列
    Laravel 队列为不同的后台队列服务提供统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关系型数据库的队列。

队列配置文件存放在 config/queue.php 。每一种队列驱动的配置都可以在该文件中找到,包括数据库,Beanstalkd ,Amazon SQS,Redis,以及同步(本地使用)驱动。其中还包含了一个 null 队列驱动用于那些放弃队列的任务。
(因 laravel 队列系统内容过多,这里只为参考者抛砖引玉,详细自行goole)

05

laravel 核心服务容器

Laravel 的核心就是一个 IoC 容器,根据文档,称其为 “服务容器”,顾名思义,该容器提供了整个框架中需要的一系列服务。

Laravel 服务容器是用于管理类的依赖和执行依赖注入的工具。依赖注入这个花俏名词实质上是指:类的依赖项通过构造函数,或者某些情况下通过「setter」方法「注入」到类中。

绑定基础
绑定一个单例可以在 App\Providers\AppServiceProvider 中的 register 方法中注册。singleton 方法将类或接口绑定到只解析一次的容器中。一旦单例绑定被解析,相同的对象实例会在随后的调用中返回到容器中:
KaTeX parse error: Undefined control sequence: \API at position 31: …leton('HelpSpot\̲A̲P̲I̲', function (app) {
return new HelpSpot\API($app->make(‘HttpClient’));
})

具体资料可参考下方两个链接:
服务容器-1 :https://learnku.com/docs/laravel/5.5/container/1289
服务容器-2 :https://www.insp.top/learn-laravel-container

你可能感兴趣的:(laravel框架简单总结)