勉強したことのメモ

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

  関連記事

PHPでログインフォームにひらがな認証を設置する方法
PHPでログインフォームにひらがな認証を設置する方法

ログインフォームに平仮名認証を設置したい。英数字認証だとSecurimageとい ...

PHPとGoogle Authenticatorの組み合わせで2段階認証を実装する方法
PHPとGoogle Authenticatorの組み合わせで2段階認証を実装する方法

2段階認証と言えばSMS送信のケースが多く、その次に通常のメール送信というケース ...

PHPでシンプルな英数字のCAPTCHAを「Gregwar / Captcha」ライブラリで実装する方法
PHPでシンプルな英数字のCAPTCHAを「Gregwar / Captcha」ライブラリで実装する方法

PHPでシンプルなランダム英数字のCAPTCHAを実装したい。「Gregwar ...

PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方
PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方

PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...

PHPで指定時間内に指定回数以上のアクセスがあった場合に429エラーを表示させる方法
PHPで指定時間内に指定回数以上のアクセスがあった場合に429エラーを表示させる方法

ログインフォームやお問い合わせページに対して短期間に多数のアクセスがあり、それを ...