Laravel 4.2刀片模板三元快捷方式

时间:2014-07-17 18:30:10

标签: php laravel-4 blade

的捷径
{{{ isset($name) ? $name : 'Default' }}}

是:

{{{ $name or 'Default' }}}

是否有捷径:

{{ property_exists( Auth::user(), 'firstname' ) ? Auth::user()->firstname : 'Your Name' }}

或者有更好(更短)的方式来写这个吗?欢迎提出建议。

1 个答案:

答案 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;
    }