首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Laravel系列7.2】错误与异常处理

Route::get('error/test', function(){ echo $a; }); 这时候直接访问当前这个路由的话,默认情况下就会显示错误信息。比如下面这样。...'debug' => (bool)env('APP_DEBUG', false), 报告异常 框架中,我们所有的异常都是通过 app/Exceptions/Handler.php 这个类来进行处理...如果你没有这方面的需求,其实这里不太需要变动,直接他们记录日志就好了。 渲染异常 产生了异常之后,我们肯定要有一个显示异常响应返回回来。...HTTP异常 HTTP 异常主要体现其实就是我们返回 HTTP 状态码,比如说 404 找不到页面,401 未授权,500 错误,502 服务不可用之类。...abort(404, '没有找到页面哦'); 测试时候我们要把上面 register() 中写 renderable() 给注释掉,因为我们捕获了全局 Exception 并进行响应返回,如果不注释掉就会以我们自定义

2.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

【Laravel系列3.1】​一个请求前世今生

请求,体现在 Laravel 框架中 request 中,这个 Request 对象底层是 Symfony 一个 RequestBag 包,它将贯穿整个框架几乎所有加载对象中,能够被我们控制器...管道最主要能力就是对于中间件处理,而责任链实现时候,遵循就是类似于中间件这样一种概念,请求依次经过每个中间件,需要处理就处理,不需要处理就路过。...通过不断地注入,这个 request 参数中间件中不停地穿梭处理,最后到达路由或者控制器。...整个调用过程底层依然使用Symfony 框架来进行请求处理。并将所有的请求数据封装成一个 Bag 类型对象。我们所有的参数都是从这个对象里面的属性中取得。...我们路由中可以直接 return 一个字符串,也可以 return view() 或者 return response->json() ,对应返回内容都是一个 Response 对象。

7.5K20

基于 Symfony 组件封装 HTTP 请求响应类

我们将演示路由器、控制器、视图模板、模型类、Session 等基本组件实现,并反过来基于这些组件完成博客系统 CRUD(增删改查)功能。...我们知道,对于 Web 框架而言,最基础功能就是处理请求、返回响应,这一点我们在前面 PHP HTTP 编程中已经演示过,不过如果基于 PHP 自带请求信息获取和响应设置机制,代码是面向过程风格,...": [ "app" ] } 然后运行 composer dump-auto 新增命名空间类映射关系生效。...路由分发代码中,可以看到,之前 _GET、_SERVER 超全局变量已经不见踪影,取而代之,我们通过调用 request 实例上 getPath 方法获取请求路径信息,作为路由分发依据,获取请求参数时...,也调整为了调用 request->get() 方法,然后传入参数名作为键,该方法可以获取所有请求参数,包括 GET 请求和 POST 请求(换言之,就是查询字符串和请求实体中参数)。

8.6K20

PHP之内置web服务器

比如 Laravel 和 Symfony。 Laravel Laravel中安装一节中介绍了一个命令可以使用PHP内置web服务器实现外部访问命令。...而 0.0.0.0,则表示我们对ip不进行限制,所有的IP都可以进行访问。...Symfony 如果你使用 Symfony 框架话,发现Symfony有一个组件叫做web-server-bundle,这个组件作用跟Laravel相同,也是不借助web服务器,实现通过浏览器访问应用程序...Symfony中有一段代码是这样: public function start(WebServerConfig $config, $pidFile = null) { // 获取默认PID...总结 通过我们学习 PHP 命令实现web服务器访问以及对 Laravel 和 Symfony 框架分析, 我了解到Windows开发过程中,我们完全可以借助该方式来摆脱对web服务器依赖.既能方便我们

3.1K10

PHP之内置web服务器

比如 Laravel 和 Symfony。 Laravel Laravel中安装一节中介绍了一个命令可以使用PHP内置web服务器实现外部访问命令。...而 0.0.0.0,则表示我们对ip不进行限制,所有的IP都可以进行访问。...Symfony 如果你使用 Symfony 框架话,发现Symfony有一个组件叫做web-server-bundle,这个组件作用跟Laravel相同,也是不借助web服务器,实现通过浏览器访问应用程序...Symfony中有一段代码是这样: public function start(WebServerConfig $config, $pidFile = null) { // 获取默认PID...总结 通过我们学习 PHP 命令实现web服务器访问以及对 Laravel 和 Symfony 框架分析, 我了解到Windows开发过程中,我们完全可以借助该方式来摆脱对web服务器依赖.既能方便我们

3.7K30

通过 PHP 原生代码实现 HTTP 路由

引言 上篇教程学院君给大家演示了如何基于 Symfony HTTP Foundation 组件封装 HTTP 请求和响应类,今天,我们在此基础上编写简单 HTTP 路由器实现。...回到 Web 应用 HTTP 路由器这个正题,我们上面提到,这个路由器可以通过 URL 请求路径和 HTTP 请求方法对用户请求进行分发,然后通过事先注册特定业务代码对请求进行处理,最后返回响应给客户端...编写 Route 类 在此之前,我们先创建一个独立路由类 Route 来表示每个路由 app/http 目录下新建 Route.php 并初始化代码如下: <?...'); } } } Router 类中,定义了一个 $routes 数组属性来存放应用注册所有路由实例,然后定义了 register 方法来注册路由,以及 dispatch.../app/routes/web.php'; // 路由分发、处理请求、返回响应 $router->dispatch($request); 至此,我们就完成了简单 HTTP 路由器实现,将原来面向过程风格代码转化为基于

1.3K20

Laravel源码解析之Request

Illuminate\Http\Request类Laravel框架中就是对客户端请求抽象,它是构建在 Symfony框架提供Request组件基础之上。...Symfony Request 实例创建是通过PHP中超级全局数组来创建,这些超级全局数组有 $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER涵盖了PHP中所有与...应用中我们就能方便应用它提供能力了,使用Request对象时如果你不知道它是否实现了你想要功能,很简单直接去 Illuminate\Http\Request源码文件里查看就好了,所有方法都列了这个源码文件里...Laravel应用、启动应用、Request经过基础中间件、通过Router匹配查找Request对应路由、执行匹配到路由、Request经过路由上到中间件到达控制器方法。...总结 随着Request最终到达对应控制器方法后它使命基本上也就完成了, 控制器方法里从Request中获取输入参数然后执行应用某一业务逻辑获得结果,结果会被转化成Response响应对象返回给发起请求客户端

2.3K20

使用 Laravel 5.5+ 更好来实现 404 响应

Laravel 5.5.10 封装了两个有用路由器方法,可以帮助我们为用户提供更好 404 页面。... laravel 5.5.10 中,我们有一个新 Route::fallback() 方法,用于定义当没有其他路由与请求匹配时 Laravel 回退路由。... @stop 当 Laravel 渲染这个回退(fallback)路由时,会运行所有的中间件,因此当你 web.php 路由文件中定义了回退路由时,所有处在 web 中间件组中间件都会被执行...API 接口说明 现在当你点击 /non-existing-page 时,你会看到回退路由中定义视图,甚至当你点击 /api/non-existing-endpoint 时,如果你也不想提供这个接口...; }); 由于 api 中间件组带有 /api 前缀,所有带有 /api 前缀未定义路由,都会进入到 api.php 路由文件中回退路由,而不是 web.php 路由文件中所定义那个。

2.2K20

PHP入门必看:主流PHP框架优缺点评比

配置简单,全部配置使用PHP脚本来配置,执行效率高;具有基本路由功能,能够进行一定程度路由;具有初步Layout功能,能够制作一定程度界面外观;数据库层封装不错,具有基本MVC功能 2....Symfony 是我了解PHP框架中功能最强大,而且我使用时间比较长,但是很多功能还是没有挖掘出来;它完整实现了MVC三层,封装了所有东西,包括 $_POST,$_GET 数据,异常处理,调试功能,...,强大到人无语;能够很随意定义各种自己class,并且symfony能够自动加载(auto load)这些class,能够程序中随意调用; 包含强大多层级项目和应用管理:Project -->...Symfony绝对是开发大型复杂项目的首选,因为使用了Symfony,将大大节约开发成本,并且多人协作时候,不会出现问题,Project级别定义好基础Class以后,任何模块都能够重用,大大复用代码...学习成本很高,并且国内没有成熟社区和文档,连中文手册都没有,相应要掌握所有功能,需要花费比较多时间 评价: Symfony绝对是企业级PHP框架,唯一能够貌似能够跟Java领域哪些强悍框架抗衡东西

2.4K20

Laravel源码解析之Response

创建Response 让我们回到Laravel执行路由处理程序返回响应代码块: namespace Illuminate\Routing; class Router implements RegistrarContract...响应定义 通过 prepareResponse中逻辑可以看到,无论路由执行结果返回是什么值最终都会被Laravel转换为成一个Response对象,而这些对象都是Symfony\Component...content))); } $this->content = (string) $content; return $this; } } 所以路由处理程序返回创业...设置Response headers 生成Response对象后就要执行对象 prepare方法了,该方法定义 Symfony\Component\HttpFoundation\Resposne类中...发送Response 创建并设置完Response后它会流经路由和框架中间件后置操作,中间件后置操作里一般都是对Response进行进一步加工,最后程序流回到Http Kernel那里, Http

1.4K40

Symfony2和Redis正名,基于PHP10亿请求周网站打造

MySQL通常用作非耗尽资源第三层缓存层(Varnish > Redis > MySQL)。所有的表都是InnoDB,最多查询是简单 SELECT ......WHERE 'id'={ID} 这个查询返回单个结果。我们还没有发现这么设置会有什么性能问题。...标准分布: 路由选择——路由定义了应用URL—我们也测试了Apache愚蠢路由规则,但它没有任何主要优化。...因为所有的注释都很好存储下来了,所以没有什么令人费解地方—最后所有的东西都是纯PHP代码。...总结 多亏Symfony2,这种设置保持高性能和高可用性同时保持了友善开发环境——可维持,稳定。实际上这是用作电商网站关键子系统关键业务需求。

4.3K50

深入解析PHP框架:Symfony框架详解与应用

Symfony优势模块化设计:Symfony组件可以单独使用或组合使用,满足不同开发需求。高性能:Symfony通过优化代码和缓存机制,提供了卓越性能表现。...灵活性:Symfony允许开发者根据项目需求进行高度自定义,适用于各种规模项目。社区支持:Symfony拥有一个庞大而活跃社区,提供了丰富文档、教程和扩展包。二、Symfony核心概念1....控制器控制器是Symfony应用核心部分,负责处理用户请求并返回响应。控制器通常是一个类,其方法被称为动作(Action)。...路由路由定义了URL路径与控制器动作之间映射关系。Symfony使用YAML、XML、PHP或注释来定义路由。...事件调度器事件调度器是Symfony另一个重要组件,用于应用中处理事件。开发者可以定义事件监听器和订阅者来响应特定事件。

11310

Laravel 5.0 之自定义错误页面

本文译自 Matt Stauffer 系列文章. ---- 以往版本 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在页面时显示一张猫 GIF 动画图片——你可能会通过 Google...>>直达解决方案 源代码解析 新版本 Laravel 中,所以处理自定义错误和异常代码都移到了 app/Exceptions/Handler.php 里。...HTTP 异常(比如 404 或者 503 这样异常),它用 renderHttpException() 方法来处理,而这个方法并不是在这个文件中定义。...* * @param \Symfony\Component\HttpKernel\Exception\HttpException $e * @return \Symfony...比如你想自定义 404 错误页面的话,只要创建一个 resources/views/errors/404.blade.php 视图文件,就可以了!

1.3K50

PHP语言表达式库ExpressionLanguage

该组件目的是允许用户配置中使用表达式来实现更复杂逻辑。例如:Symfony Framework 安全性、验证规则和路由匹配中使用表达式。...这个想法是网站网站管理员不使用PHP情况下以动态方式配置东西,并且不会引入安全问题: # Get the special price if user.getGroup() in ['good_customers...表达式是一行程序,通常返回布尔值,可供代码if语句中执行表达式时使用。一个简单表达式例子是1 + 2。...Parse(解析) symfony/expression-language 中,解析(parse)是指将字符串形式表达式转换成内部可执行表达式结构。...Lint(语法检查) symfony/expression-language 中,并没有直接提供名为 lint 方法来进行语法检查。

24810

Laravel 路由匹配过程都做了些什么呢?

那这四个验证器都是怎么验证呢? 请求方法验证 请求方式验证最简单,就是验证当前请求方式是否是当前路由允许请求方式。而路由允许请求方式路由实例化时候就创建好了。...getCompiled返回Symfony\Component\Routing\CompiledRoute这个对象包含了当前路由编译之后uri匹配正则表达式,域名匹配正则表达式等信息。...CompiledRoute是谁返回? 每个路由获取验证器进行验证之前,都会执行compileRoute方法创建CompiledRoute对象。...域名,路径匹配规则解析之后,根据解析后数据创建一个CompiledRoute对象,并返回 因此,路由编译过程中,主要是根据路由配置,解析出匹配正则表达式,变量数组,前缀信息。...通过解析获取token数组,保存了所有的匹配规则数组。如果当前匹配规则token是text类型,则在对字符串进行转义处理,返回作为匹配正则表达式。

1.3K20
领券