的捷径
{{{ isset($name) ? $name : 'Default' }}}
是:
{{{ $name or 'Default' }}}
是否有捷径:
{{ property_exists( Auth::user(), 'firstname' ) ? Auth::user()->firstname : 'Your Name' }}
或者有更好(更短)的方式来写这个吗?欢迎提出建议。
答案 0 :(得分:2)
考虑到有时会更短!=更好,特别是如果你将来要回到你的代码。
我能想到的最短的是使用object_get()
帮助器:
{{ object_get(Auth::user(), 'firstname', 'Your name') }}
基本上与array_get()
相同,但是对象:如果属性不存在,并且您提供默认值作为第三个参数,则返回该值,否则您将获得object->属性值。
我认为默认值的使用没有详细记录,但如果你在vendor/Laravel/Illuminate/Support/helpers.php
下查看 771-787 行,你会得到函数定义:
function object_get($object, $key, $default = null)
{
if (is_null($key) || trim($key) == '') return $object;
foreach (explode('.', $key) as $segment)
{
if ( ! is_object($object) || ! isset($object->{$segment}))
{
return value($default);
}
$object = $object->{$segment};
}
return $object;
}