我把自己電腦 PHP 版本升級到 8.2,CodeFormatter 就壞了,噴出 Call to undefined function each() error。
發生原因是程式裡面有用到 each() function,而這個 function 在 PHP 7.2 起被廢棄,並自 PHP 8.0 起被移除,所以才會出現找不到 function 的情況。
解決方式有兩個:
※ phpf.phar 路徑為 C:\Users\user\AppData\Roaming\Sublime Text\Packages\CodeFormatter\codeformatter\lib\phpbeautifier\phpf.phar
發生原因是程式裡面有用到 each() function,而這個 function 在 PHP 7.2 起被廢棄,並自 PHP 8.0 起被移除,所以才會出現找不到 function 的情況。
解決方式有兩個:
一、指定較低版本的 PHP
開啟套件設定檔,調整 php_path 為較低版本的 PHP,例如:"codeformatter_php_options": { ... "php_path": "C:/AppServ/php7/php.exe", ... },
二、更新套件裡的 phpf.phar 程式
可以從 這裡 下載 fmt.phar,更名後替換掉原本的 phpf.phar。※ phpf.phar 路徑為 C:\Users\user\AppData\Roaming\Sublime Text\Packages\CodeFormatter\codeformatter\lib\phpbeautifier\phpf.phar
三、更新
由於新的 phpf.phar 對於程式中含 namespace 的型態變數 format 有問題,又找不到比較好的 phpf.phar,所以棄用,改用套件 phpfmt。public function FunctionName(App\Models\User $user) { // } // 會變成↓ public function FunctionName(App\Models\User$user) { // }
參考文件
留言
張貼留言