在Laravel 新版本當中,有一個非常有用的輔助方法:optional()
這個方法的應用場景是什麼呢?其實如果你多寫程式碼的話,常常會遇到類似下面的報錯訊息:
Call to a member function on null object...
登入後複製
這其實是在我們的程式碼中存在著某個物件為空,所以在我們呼叫方法或取得屬性的時候就會報出以上錯誤訊息。例如我們舉個例子:
在
User
的體系中,我們也有Profile
的Model 文件,而一個User
擁有一個Profile
(Profile
中包含使用者的地址資訊)
public function profile(){ return $this->hasOne(Profile::class); }
登入後複製
然後在我們User
的資訊頁面,我們希望透過下面的程式碼取得User
的位址:
$user->profile->address;
登入後複製
如果在資料庫中,我們沒有該User
對應的Profile
,這個時候就會出現文章開始說到的類似錯誤了。
所以,這個時候,
optional()
就可以派上用場了
我們只要這樣取得使用者的地址資訊就好:
optional$user->profile)->address
登入後複製
這個時候,即使profile
為空值(null
),這一行程式碼也不會報錯,而是會顯示一個空的字串出來。
是不是非常有用!有了optional()
這個輔助函數之後,在很多類似的程式碼中,在你不確定是否該物件會為null
的時候,就可以加上optional ()
來做保險了!