laravel学习1.0

laravel 生命周期
在这里插入图片描述

1:首先是用户,用户访问服务器->然后请求直接倒public/index.php入口文件处
2:然后通过composer自动加载设置然后设置我们应用的一个情况,然后进入到我们框架启动的文件也就是bootstrap/app.php
3:根据不同的类型 web请求或者是artisan命令请求然后传入到不同的内核也就是对应的,http内核和console内核
4:然后将我们的请求传入到相应的服务容器,服务提供者这里在里面配置了各种各样的验证,配置文件的数组,在里面去给他通过不同的中间价,比如会话啊,或者读写的判断,或者是验证CSRF令牌然后通过我们的root方法还要通过global middleware 传入到我们的路由
5:然后路由通过路由中间件,通过定义好的这个controller类,和具体到类里面的某个方法,然后controller再去判读我们的模型,在模型里面进行curd,或者业务需求,然后放回的数据返回到view里面,然后再展示给服务器,然后用户就能看到我们搜索到的东西

laravel 里面的集合
laravel 路由的定义:网站所有的入口操作配置文件;routes;

nginx 配置laravel时 新建了路由 404问题
在nginx.conf 配置中 需要这样配置:

location / {
root /var/nginx/html/123.com;
index index.html index.htm index.php;
 try_files $uri u r i / / p u b l i c / i n d e x . p h p uri/ /public/index.php uri//public/index.phpis_args$query_string; OR try_files $uri u r i / / i n d e x . p h p uri/ /index.php uri//index.phpis_args$query_string;
}
路由:
组成
请求类型+路由的连接+匿名函数操作逻辑代码
基本路由:
Route::get/post ( “hello”, function(){
return “返回结果”;
}
);
路由参数:
Route::get ( ‘hello/{id}’ , function ( $id ) {
return ’ hello word id is ’ . $id ;
}
);

laravel请求的生命周期:
在这里插入图片描述

1,用户发起请求然后到服务器(nginx或者是阿帕奇),服务器就会加载服务配置定向在laravel的public/index.php
2,该文件里面有composer自动生成的自动加载定义器加载定义vendor/autoload.php然后从bootstrap/app.php中检索laravel应用程序实例
3,传入的请求发送到http内核或者conesole内核这俩个请求充当所有流进请求的中心位置
4,然后到服务加载这边用程序所有服务提供程序都在config/app.php文件中的providers数组laravel9框架将遍历这个数组(提供者)并且实例化他们中的每一个实例化完成后将会在所有提供程序上调用register方法(进行注册),然后一旦所有提供者都被注册了就会对每个提供程序调用boot方法,服务提供者可依赖于在执行boot方法与每个容器绑定
5,应用程序最重要的服务提供者就是app\provider/RouteServiceProvider路由提供者,此服务将加载应用程序的routes,目录中包含了路由文件,一旦路由或者控制器方法返回一个响应该响应将通过路由的中间件返回从而使应用程序有机会修改或者检查传出响应,最后返回http内核的hanhle的方法将返回响应对象,并且index.php文件在返回的响应上调用send方法将内容发送到用户的服务器上

官方文档:
生命周期概述#

第一步
Laravel 应用程序的所有请求的入口点都是 public/index.php 文件。所有请求都由你的 web 服务器(Apache/Nginx)配置定向到此文件。那个 index.php 文件不包含太多代码。相反,它是加载框架其余部分的起点。

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

HTTP / Console 内核
接下来,根据进入应用的请求类型,传入的请求将被发送到 HTTP 内核或者 Console 内核。这两个内核充当所有请求流经的中心位置。现在,我们只关注位于 app/Http/Kernel.php 中的 HTTP 内核。

HTTP 内核继承了 Illuminate\Foundation\Http\Kernel 类,该类定义了一个将在执行请求之前运行的 bootstrappers 数组。这些引导程序用来配置异常处理、配置日志、检测应用程序环境,并执行在实际处理请求之前需要完成的其他任务。通常,这些类处理你无需担心的内部 Laravel 配置。

HTTP 内核还定义了一个 HTTP 中间件列表,所有请求在被应用程序处理之前都必须通过该列表。这些中间件处理读写 HTTP 会话 ,确定应用程序是否处于维护模式, 校验 CSRF 令牌 , 等等。我们接下来会做详细的讨论。

HTTP 内核的 handle 方法的签名非常简单:它接收 Request 接口并返回 Response 接口。把内核想象成一个代表整个应用程序的大黑匣子。向它提供 HTTP 请求,它将返回 HTTP 响应。

服务提供者
最重要的内核引导操作之一是为应用程序加载服务提供者 。应用程序的所有服务提供程序都在 config/app.php 文件中的 providers 数组。

Laravel 将遍历这个提供者列表并实例化它们中的每一个。实例化提供程序后,将在所有提供程序上调用 register 方法。然后,一旦所有的提供者都被注册了,就会对每个提供程序调用 boot 方法。服务提供者可能依赖于在执行 boot 方法时注册并可用的每个容器绑定。

服务提供者负责引导框架的所有不同组件,如数据库、队列、验证和路由组件。基本上,Laravel 提供的每个主要功能都是由服务提供商引导和配置的。由于它们引导和配置框架提供的许多特性,服务提供者是整个 Laravel 引导过程中最重要的部分。

路由
应用程序中最重要的服务提供者之一是 App\Providers\RouteServiceProvider。此服务提供者加载应用程序的 routes 目录中包含的路由文件。继续,打开 RouteServiceProvider 代码,看看它是如何工作的!

一旦应用程序被引导并且所有服务提供者都被注册,Request 将被传递给路由器进行调度。路由器将请求发送到路由或控制器,并运行任何路由特定的中间件。

中间件为过滤或检查进入应用程序的 HTTP 请求提供了一种方便的机制。例如,Laravel 包含一个这样的中间件,用于验证应用程序的用户是否经过身份验证。如果用户未通过身份验证,中间件将用户重定向到登录页。但是,如果用户经过身份验证,中间件将允许请求进一步进入应用程序。一些中间件被分配给应用程序中的所有路由,比如那些在 HTTP 内核的 $middleware 属性中定义的路由,而一些只被分配给特定的路由或路由组。你可以通过阅读完整的中间件文档来了解关于中间件的信息。

如果请求通过了所有匹配路由分配的中间件,则执行路由或控制器方法,并通过路由的中间件链路返回路由或控制器方法的响应。

最后
一旦路由或控制器方法返回一个响应,该响应将通过路由的中间件返回,从而使应用程序有机会修改或检查传出的响应。
最后,一旦响应通过中间件返回,HTTP 内核的 handle 方法将返回响应对象,并且 index.php 文件在返回的响应上调用 send 方法。send 方法将响应内容发送到用户的 Web 浏览器。至此,我们已经完成了整个 Laravel 请求生命周期的旅程!

关注服务提供者
服务提供者确实是引导 Laravel 应用程序的关键。创建应用程序实例,注册服务提供者,并将请求传递给引导应用程序。就这么简单!
牢牢掌握服务提供者的构建和其对 Laravel 应用处理机制的原理是非常有价值的。你的应用的默认服务提供会存放在 app/Providers 目录下面。
默认情况下,AppServiceProvider 是空白的。这里是用于你添加应用自身的引导处理和服务容器绑定的一个非常棒的地方。在大型项目中,你可能希望创建多个服务提供者,每个服务提供者都为应用程序使用的特定服务提供更细粒度的引导。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值