勉強したことのメモ

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で複数のファイルをまとめてzipファイル化し、ダウンロードさせる方法

PHPで複数のファイルをまとめてzipファイル化し、ユーザーにダウンロードさせた ...

フォームからCSVファイルをアップロードしてPHPの配列に格納する方法

formからcsvファイルをアップロードさせて、PHPで色々処理したかった。とり ...

日付の比較で○日前というのを調べる

PHP及びjavascriptで日付の比較をしたく、締切日とかではなく ○日前と ...

formのinput="file"でディレクトリを選択させ、ディレクトリ内のファイルを全てアップロードする方法

フォームで複数のファイルをアップロードしたい場合、input="file"を複数 ...

PHPでファイル書き込み時に「failed to open stream: HTTP~~」エラー

PHPでファイルを書き込む際に「failed to open stream: H ...