【エラー対処方法】Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; T has a deprecated constructor

PHP 7 以降のバージョンで、以下のようなエラー・メッセージが発生するようになりました。

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; T has a deprecated constructor in main.php on line 2
<?php
class T { // Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; T has a deprecated constructor in main.php on line 2
   function T() {} // 原因は2行目ではなく3行目以降のこのコード
}

原因は PHP 4 時代のコンストラクタ宣言(function T())を用いていることです。PHP 7 ではクラス名と同名のメソッドを定義することが出来なくなってしまいました。代わりに__constructメソッドによる宣言(function __construct())を行う必要があります。

class T {
   function __construct() {} // OK
// function T() {}           // ERROR: T has a deprecated constructor
}

ちなみに今回のエラーはE_DEPRECATEDレベルのエラーとして警告されています。E_DEPRECATEDは将来のバージョンで動作しなくなるコードに対する警告レベルであるため、エラーの非表示という形では対処せず、上記の対処方法で早めに対応することを推奨します。

なお本エラーの対処によって別の新たなエラーが発生する場合があります。具体的にはコンストラクタ呼び出しが失敗する可能性があります。その際の対処方法については以下の記事を参考にしてください。

【対処方法】Call to undefined method T::T() #コンストラクタ呼び出しが失敗する場合
広告
広告