php - 在刀片模板中捕获“试图获取非对象的属性”
问题描述
我正在调试一个 laravel 项目,在许多情况下,开发人员只是将双胡须放入引用对象属性的刀片模板中,而没有首先检查这些关系是否存在。
例子
{{$category->name}}
<small>{{$category->parent->name}}</small>
如果例如 $category 未设置,或者 $category->parent 未设置,laravel 中是否有一种内置方式可以静默失败,而无需采取这些措施...
@if (isset($category))
{{$category->name}}
@endif
@if (isset($main_category->parent))
@if($main_category->parent != null)
<small>{{$main_category->parent->name}}</small>
@endif
@endif
解决方案
有更好的方法来隐藏你得到的错误,
{{ @$category }}
@
将抑制未定义或未设置变量的错误。
PHP 支持一种错误控制运算符:at 符号 (@)。当附加到 PHP 中的表达式时,该表达式可能生成的任何错误消息都将被忽略。
这是错误控制运算符的官方 php 文档。
推荐阅读
- azure - 已取消构建管道 - 管道无效
- wordpress - Varnish + Wordpress + Nginx - 防止 no-store no-cache must-revalidate headers
- node.js - 防止在错误请求时关闭连接
- binary - 为什么默认值是 0x1000 而不是 0x200?
- android - 实现颜色设置
- emscripten - emscripten 和动态链接:如何与 embind 链接?
- sql - 如何在 Rapid SQL 中比较一张表中的 2 行
- intellij-idea - 为什么 IntelliJ IDEA 默认使用过时版本的 Maven 插件?
- google-chrome-extension - 您能检测到不同 Windows 中打开的选项卡之间的移动吗?
- java - Spring MVC 从 4 到 5 的视图问题