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年に作られたものでその後更新されていないため、もうちょっと新しめの似たようなライブラリを探したいところ。
関連記事
-
-
フォームからCSVファイルをアップロードしてPHPの配列に格納する方法
formからcsvファイルをアップロードさせて、PHPで色々処理したかった。とり ...
-
-
PHPでランダムな値を取得したいケース諸々の対応方法
テストデータを作成する際にランダムな値を入れたかったけど、色々ケースがあったので ...
-
-
TCPDFに任意の日本語フォント(Noto Sans JP)を追加する方法
TCPDFはデフォルトで6つの日本語フォントが用意されているっぽいが、それら以外 ...
-
-
PHPでLINEログイン後「ユーザー名」「ユーザーID」「プロフィール画像URL」「メッセージ」を取得する方法
<a>タグのリンクからページ遷移するとLINEログインし、その後に「 ...
-
-
PHP8系からは文字列検索はstrposよりstr_containsが良さそう
PHP8.0のアップデートに関する記事を読んでいたところstr_contains ...