勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHP8系の環境でdBug.phpライブラリが使用できない場合の対応方法

  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

  関連記事

PHP8系で追加されたJIT(Just-In-Time)の設定方法

PHP8系でOPcacheの拡張機能としてJIT(Just-In-Time)とい ...

PHPで「php-qrcode-detector-decoder」ライブラリを使用してQRコードをデコードする方法

PHPでQRコードの画像をデコードし、値を変数等に格納したい。何とかならないか調 ...

CodeIgniterのバージョンの調べ方

CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...

PHPにて西暦から干支(十二支)を計算し表示する方法

先日MySQLにてSELECT時にdate型のカラムから干支(十二支)を計算し表 ...

MySQLで重複を除く

ユニークな値を取り出したいときに使う。 DISTINCT(ディスティンクト) S ...