2014-07-17 122 views
0

的短切的Laravel 4.2刀片模板三元捷徑

{{{ isset($name) ? $name : 'Default' }}} 

是:

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

是否有捷徑爲:

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

還是有更好的(更短)的方式來寫這個?歡迎提出建議。

回答

2

請考慮有時候更短!=更好,尤其是如果您將來返回到您的代碼。

我能想到的是使用object_get()助手的最短:

{{ object_get(Auth::user(), 'firstname', 'Your name') }} 

基本上是一樣的array_get(),但使用對象:如果屬性不存在,你提供一個默認值3參數,則返回該值,否則您將獲得object-> property值。

我覺得默認值的使用是不是有據可查的,但如果你看看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; 
    } 
+0

同意。謝謝。我會試一試。 – PeterKA

+0

+1感謝您的功能定義。很棒! – PeterKA