PHPは大得意なプログラム言語、ペチパーユゲタです。
今このブログを書いている時点でのPHPの安定メジャーバージョンは、8です。
数年バージョン7を使ってきて、バージョンを8にしたら、何が起こるか、試しにやってみたところ、
以前作ったシステムは無事に動くことはできましたが、Deprecaredメッセージを表示してみるモードに切り替えてみると、
大量のアラートメッセージが表示されました。
PHP8にアップデートで出たアラートの一覧を取得するコマンド
とりあえず、システム内に大量に(php7で構築した)PHPがあるので、問題のある(Deprecaredアラートが出る)PHPファイルを抽出したいと思います。
次のコマンドをroot階層で実行すると・・・
# コマンド実行
$ find . -name '*.php'| xargs -I{} php -l {} | grep -v 'No syntax errors' > php-error.txt
# 結果
Deprecated: Required parameter $name follows optional parameter $type in ./page/myntinc/contents/blog_old1/php/group.php on line 25
Deprecated: Required parameter $max_count follows optional parameter $uid in ./api/sns/php.bak2/crawl.php on line 384
Deprecated: Required parameter $max_count follows optional parameter $uid in ./api/sns/php.bak2/crawl.php on line 470
Deprecated: Required parameter $end_cursor follows optional parameter $graphql in ./api/sns/php.bak/account.php on line 138
Deprecated: Required parameter $end_cursor follows optional parameter $sharedData in ./api/sns/php.bak/account_bak.1.php on line 133
こんな感じで、ファイル別と問題箇所別に1行ずつ、php-error.txtというファイルを作って、リストアップしてくれます。
行の後半に書かれている対象のファイルパスと行数が、親切で便利ですね。
findコマンドでphpファイルを一括抽出して、正常なファイルの場合に"No syntax error"と表示されるのを除外して、そのチェックした対象ファイルと問題がある場合はその行数(ファイル内に複数問題があれば、複数行)記述されます。
ちなみに、"Required parameter $name follows optional parameter $あ"というのは、functionの送値定義の箇所で、デフォルト値を記述が必須になった仕様で発生しています。
function hoge($a){
...
}
↓次のように修正
function hoge($a=''){
...
}
PHP8にアップデートに関して
https://kinsta.com/jp/blog/php-8/
このサイトに、アップデートの内容が書かれているので、ペチパー諸君は、一読しておきましょう。
Deprecared以外に、仕様が変わっている場合は、システムがクラッシュする可能性もありますからね。
何はともあれ、一旦PHPコマンドの-lオプションで構文チェックして、エラー内容を調べて対応するという程度でも全然いいし、
スピード感はそっちの方が早いかもしれませんね。
さて、phpの自分コーディングルールをPHP8用にアップデートするとしますか。
0 件のコメント:
コメントを投稿