Bulblub

PHP5.6がEOL目前!php7marでプロジェクトのチェックを

November 14, 2018

PHP 5.6 2018年末にEOL(End of Life)を迎えるにあたりまして、皆様におかれましては滞りなくPHP 7.xへの移行はお済みでしょうか。そうで無い方はお急ぎください。ということで、移行の最初のステップにザッとプロジェクト全体をチェックできる PHP 7 Migration Assistant Report(php7mar) のご紹介。php7marはPHP5からPHP7への移行をアシストするコマンドラインツールとのこと。

試してみる

git clone git@github.com:snize/drupal-php7mar.git
cd drupal-php7mar

今回は Lando というDockerベースの開発環境構築ツールを使いました。 Landoをインストールしない場合は以下はスキップしてテストからでもOK。

lando start
lando composer install
lando drush site:install --sites-subdir=default demo_umami --db-url=mysql://drupal8:drupal8@database/drupal8 -y

テスト

では、今回のために web/modules/custom 以下に雑に作成したカスタムモジュールをテストする。

# 準備
composer install
mkdir reports
# テスト
php vendor/alexia/php7mar/mar.php -f="web/modules/custom" -r="reports" -x="php,twig,module"

すると reports 以下にMarkdown形式のレポートが作成されたはず。

https://github.com/snize/drupal-php7mar/blob/master/reports/2018-11-13%2020.34.12%20custom.md


2018-11-13T20:34:12+09:00 Scanning /Users/snize/dev/github/drupal-php7mar/web/modules/custom Including file extensions: php,twig,module Processed 38 lines contained in 2 files. Processing took 0.10889911651611 seconds.

critical

/Users/snize/dev/github/drupal-php7mar/web/modules/custom/php5legacy/php5legacy.module

  • deprecatedFunctions
  • Line 27: $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

nuance

/Users/snize/dev/github/drupal-php7mar/web/modules/custom/php5legacy/php5legacy.module

  • foreachByReference
  • Line 29: foreach ($array as &$val) {

このようにcriticalnuance(なぜwarningでは無いんだろう?)のように深刻度別にレポートが出力される。

まとめ

ということで、実際にPHP5.6からPHP7.1へのマイグレーションで利用して良い感じだったので共有してみました。PHP 7 Compatibility Checker(php7cc) no longer supportedとのことで利用を見送りました。

Tags:

Tomotsugu Kaneko

Written by Tomotsugu Kaneko who lives and works in Japan.