PHP8系の環境でdBug.phpライブラリが使用できない場合の対応方法
先日メモしたdBug.phpをPHP8系の環境で試すと動作しなかった。ただエラーメッセージは表示されず、構文チェックツールなどでも特に引っかからなかった。調べてみるとPHP8系でClassのコンストラクタ名のルールが多少変わったようでそちらが原因みたい。以下に対応方法をメモ。
リファレンス
https://www.php.net/manual/ja/migration80.incompatible.php
動作しない原因
上記リファレンスの以下部分が該当するっぽい。
クラス名と同じ名前のメソッドは、コンストラクタと解釈されなくなりました。 __construct() メソッドを代わりに使って下さい。
具体的にはdBug.phpの69行目のコンストラクタが以下のようになっている点が原因と思われる。
function dBug($var,$forceType="",$bCollapsed=false) {
対応方法
dBug.phpを書き換える場合
コンストラクタ部分を以下の通り書き換える。
#変更前
function dBug($var,$forceType="",$bCollapsed=false) {
#変更後
function __construct($var,$forceType="",$bCollapsed=false) {
そうすると以下の形で出力可能。
new dBug($array);
dBug.phpを書き換えない場合
以下の形で出力させる。
$dBug = new dBug(); $dBug->dBug($array);
所感
dBug.phpが2012年に作られたものでその後更新されていないため、もうちょっと新しめの似たようなライブラリを探したいところ。
関連記事
-
-
PHPにてユニークかつランダム英数字の文字列を作成する方法
PHPでユニークな文字列を作成したかった。MySQLとかのオートインクリメントの ...
-
-
PHPでtry~catch文
PHPでもあるってのを知らなかったのでメモ。 ■参考サイト http://www ...
-
-
MySQLでIPを整数値としてカラムに格納する
MySQLでIPを整数値としてカラムに格納しているケースがあった。今までIPが必 ...
-
-
PhpSpreadsheetで作成したエクセルファイルをPDFファイルに変換する方法
以前にPhpSpreadsheetでフォーマット用のエクセルを読み込み、指定した ...
-
-
Composerで後から別のパッケージを追加する方法と削除する方法
Composerで何らかのパッケージをインストールし、後から別のパッケージを追加 ...