laravel笔记

1. 请求周期:

index.php 文件加载 Composer 生成的自动加载设置,然后从 bootstrap/app.php 脚本中检索 Laravel 应用程序的实例。 Laravel 本身采取的第一个动作是创建一个应用程序 / 服务容器

接下来, 根据进入应用程序的请求类型来将传入的请求发送到 HTTP 内核或控制台内核。而这两个内核是用来作为所有请求都要通过的中心位置。 现在,我们先看看位于 app/Http/Kernel.php 中的 HTTP 内核。

index.php->bootstrap/app.php->app/Http/Kernel.php->config/app.php->providers(服务提供:注册服务容器绑定,事件监听器,中间件,甚至是路由。服务提供器是配置应用程序的中心)

2. 绑定接口:

服务容器有一个很强大的功能,就是支持绑定接口到给定的实现。例如,如果我们有个 EventPusher 接口 和一个 RedisEventPusher 实现。一旦我们写完了 EventPusher 接口的 RedisEventPusher 实现,我们就可以在服务容器中注册它,像这样:

$this->app->bind(
    'App\Contracts\EventPusher',
    'App\Services\RedisEventPusher'
);

这么做相当于告诉容器:当一个类需要实现 EventPusher (接口类)时,应该注入 RedisEventPusher(接口的实现类)。现在我们就可以在构造函数或者任何其他通过服务容器注入依赖项的地方使用类型提示注入 EventPusher 接口:

use App\Contracts\EventPusher;

/** * 创建新的类实例 * *

@param EventPusher $pusher * @return void */

public function __construct(EventPusher $pusher) { $this->pusher = $pusher; }

 

3. 中间件:

,首先应该在 app/Http/Kernel.php 文件内为该中间件分配一个键。默认情况下,该类中的 $routeMiddleware 属性下包含了 Laravel 内置的中间件。若要加入自定义的中间件,只需把它附加到列表后并为其分配一个自定义键即可。例如:

// 在 App\Http\Kernel 类中...

protected $routeMiddleware = [
   'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];

一旦在 HTTP 内核中定义好了中间件,就可以通过 middleware 方法将为路由分配中间件:

Route::get('admin/profile', function () {
    //
})->middleware('auth');

你也可以为路由分配多个中间件:

Route::get('/', function () {
    //
})->middleware('first', 'second');

分配中间件时,你还可以传递完整的类名:

use App\Http\Middleware\CheckAge;

Route::get('admin/profile', function () {
    //
})->middleware(CheckAge::class);

3. 控制器并 不是强制要求 继承基础类。但是,如果控制器没有继承基础类,你将无法使用一些便捷的功能,比如 middleware, validate 和 dispatch 方法。

4. 请求

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值