今天在 laravel 的專案下跑 phpunit 突然報了一堆 [Symfony\Component\Debug\Exception\FatalErrorException] 的錯誤。
可能的原因有很多。
以我的問題來說,一追才知道原來是因為我在 blade.php 的 view 下,寫了兩隻現成的 function,但是 phpunit 不能這樣做,測試被執行之後,重複執行相同的函數,就等於函數被重新定義,所以好方法就是,還是得乖乖的把這兩個 function 封裝到某個 class 下。
原本我的 xx.blade.php 是這樣:
類似這樣:
可能的原因有很多。
以我的問題來說,一追才知道原來是因為我在 blade.php 的 view 下,寫了兩隻現成的 function,但是 phpunit 不能這樣做,測試被執行之後,重複執行相同的函數,就等於函數被重新定義,所以好方法就是,還是得乖乖的把這兩個 function 封裝到某個 class 下。
原本我的 xx.blade.php 是這樣:
function myViewHelper() {
return ...;
}
<a href="{{ myViewHelper() }}">Go!</a>
最後我寫了一支類似 helper 或是 service 的 php,把 class use 進來,再 call 那個 function,得救 :P 。return ...;
}
<a href="{{ myViewHelper() }}">Go!</a>
類似這樣:
use XXX\XXX\ myViewHelper as myViewHelper;
<a href="{{ myViewHelper::getSortLinks() }}">Go!</a>
應該還有更好的方式,可能 use 不應該放在 view(xx.blade.php) 的檔案裡,不過重點就是... 不能直接定義 function 在 view 裡。<a href="{{ myViewHelper::getSortLinks() }}">Go!</a>
沒有留言:
張貼留言
若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD