LoginSignup
10
9

More than 5 years have passed since last update.

PHP7へアップグレードする際に気をつけること - E_STRICTの廃止

Posted at

概要

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調査(21)E_STRICTの廃止

[関連記事]
PHP7を触ってみたメモ

PHP5.3.3からPHP 5.6.7にアップデートする際にやったこと
PHP5 Strict Standards:を非表示にする方法

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9