首页 > 解决方案 > 在刀片模板中捕获“试图获取非对象的属性”

问题描述

我正在调试一个 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

标签: phplaravelerror-handlinglaravel-blade

解决方案


有更好的方法来隐藏你得到的错误,

{{ @$category }}

@将抑制未定义或未设置变量的错误。

PHP 支持一种错误控制运算符:at 符号 (@)。当附加到 PHP 中的表达式时,该表达式可能生成的任何错误消息都将被忽略。

这是错误控制运算符的官方 php 文档。


推荐阅读