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 是空白的。这里是用于你添加应用自身的引导处理和服务容器绑定的一个非常棒的地方。在大型项目中,你可能希望创建多个服务提供者,每个服务提供者都为应用程序使用的特定服务提供更细粒度的引导。

laravel学习1.0相关推荐

  1. mac redis 链接_在Ubunt/Mac系统安装Redis以及设置Redis密码并且允许远程连接 - Laravel学习网...

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...

  2. 支付宝集五福下周一开始;iPhone 面世 13 周年;Laravel 6.10.0 发布 | 极客头条

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  3. laravel学习途径

    关于学Laravel的话, The Best Laravel and PHP Screencasts 是很不错的,而且关于Laravel5的那个超长系列视频是免费的!这个是首选 相信我,laracas ...

  4. 1月10日科技资讯|支付宝集五福下周一开始;iPhone 面世 13 周年;Laravel 6.10.0 发布

    一分钟速览新闻点 周鸿祎回应年会特等奖「免裁券」:编的自黑段子 搜狐迟到一次罚款 500,回应:希望员工对工作有激情 华为否认将推出消费级台式机:只提供芯片,不做整机 微信放开5000人好友上限,但新 ...

  5. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  6. php redis 切换数据库,Laravel Redis数据库切换以及laravel缓存/Session使用不同的Redis数据库 - Laravel学习网...

    Redis Select命令用于切换到指定的数据库,数据库索引号index用数字值指定,以0作为起始索引值. 比如我们要使用db10数据库,只需要使用如下命令即可: redis 127.0.0.1:6 ...

  7. php中文网 homestead,教你离线升级 Laravel Homestead 4.0.0

    下面由Laravel教程栏目给大家介绍离线升级 Laravel Homestead 4.0.0,希望对需要的朋友有所帮助! 以前偶尔使用 laravel 5.1 LTS 写写代码,所以也就没有关心过是 ...

  8. php oauth2.0 实例,详解laravel passport OAuth2.0的4种模式

    参考: 1... 熟悉的场景 某个网站,某用户未注册,注册时提示可微信账号登录(github, google都有类似 某网站是第三方(客户端), 认证服务器和资源服务器都在微信,资源是指微信的用户名, ...

  9. laravel学习资料整理

    http://laravelacademy.org/post/1508.html TypiCMS 是一个基于 Laravel 5 构建的.支持多语言的内容管理系统(CMS). 2.GitHub htt ...

最新文章

  1. 亿级京东应用架构设计与治理
  2. python:文件读写操作
  3. ElementUI中el-upload传递额外参数为date类型时后台SpringBoot接收不到
  4. Win10修改防火墙入站规则
  5. GB 18030介绍及其与相关标准的比较-GB13000(附:Unicode规范)
  6. vm服务器虚拟化如何漂移,解决虚拟机漂移问题的自动化网络管理
  7. 在java中原始时间_Java 日期时间
  8. HttpSession 和 HttpSession
  9. Java —— eclipse.zip
  10. 在Blazor中构建数据库应用程序——第4部分——UI控件
  11. kali无法共享本机文件_MySQL服务端读取客户端文件漏洞的复现
  12. Maven 本地仓库明明有jar包,pom文件还是报错解决办法(Missing artifact...jar)
  13. Centos 6.2 快速配置vsftpd虚拟用户
  14. 程序开发基础学习五(json配置、解析文件,c++篇)
  15. Android 9.0 HIDL接口添加
  16. 用slub track调试use after free问题
  17. EDA技术与应用实验二(PowerShell实现)
  18. drozer安装使用问题总结
  19. qt轻松实现不规则按钮
  20. MSDC 4.3 接口规范(12)

热门文章

  1. 霍格沃兹测试开发学社技术学习笔记之——Python基础笔记
  2. CART回归树算法过程
  3. 【语义分割】综述——一文搞定语义分割
  4. js计算时间差,包括计算,天,时,分,秒
  5. 前端面试题《CSS》
  6. Linux下软连接的概念
  7. u8系统清理异常咋进服务器,用友u8怎么清除异常
  8. BookKeeper设计介绍及其在Hadoop2.0 Namenode HA方案中的使用分析
  9. Linux常用命令有哪些
  10. [Android Studio] 手机安装apk报错解决方法