概要
PHP7にアップグレードする際に困ったことがあったのでメモ。
E_STRICTエラーの廃止
PHP7からE_STRICTエラーが廃止され、E_NOTICE、E_WARNING、E_DEPRECATEDのどれかになる。
と い う こ と は
PHP5.6にアップグレードしたときに、error_reportingをいじって、取り急ぎE_STRICTを回避していた(ごまかしていた)部分を直さなくてはいけなくなった。
PHP5.6時代の回避手段
error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE & ~E_DEPRECATED
E_STRICT => E_WARNINGになった例
例えば、PHP5.6から、継承元の親クラスと同名のメソッドがあるとき、引数の数が双方で同じでないと、E_STRICTが出るようになった。
下記、エラーが出る例
<?php
class A {
function __construct() {
}
protected function run( $a ) {
return 'This is A.';
}
}
class B extends A {
function __construct() {
parent::__construct();
}
function run( $a, $b ) {
return 'This is B.';
}
}
$c = new B();
これがPHP7ではE_WARNINGとなったため、ソースの修正が必要。E_WARNINGを非表示にするわけにはいかないし。
古いソースコードのものをPHP7にアップグレードするには、結構手間が掛かりそう。。。
以上
[関連記事]
PHP7を触ってみたメモ
PHP5.3.3からPHP 5.6.7にアップデートする際にやったこと
PHP5 Strict Standards:を非表示にする方法