質問するログイン新規登録
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1136閲覧

PHP5.2→PHP7.3でのrestore_error_handlerの挙動の変化について

asus2

総合スコア22

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/04/25 00:58

0

0

お世話になります。

PHP5.2からPHP7.3へのバージョンアップを命じられ取り組んでいるのですがどうしてもわからないことがあります。

データベースへの接続用クラス内で、

PHP

1set_error_handler(array($this,'errorHandler'));

とエラーハンドラーを設定し、データベースへの接続用クラス使用後に

PHP

1$DB = new データべースへの接続用クラス 2restore_error_handler(array($DB,'errorHandler'));

上記のようにエラーハンドラーを解除したかった(?)ような記述がありました。
ただ、restore_error_handlerのリファレンスを読むと、引数を入れられない関数なのではないかと思います。

実際、PHP7.3では引数が多いとエラーが出ています。
PHP5.2ではエラーが出ていなかったのでスルーされてきたようです。
単純に引数を消してしまおうと思いましたが、もしかしたら最初の作成者のなにかしらの意図があっての書き方かとも思い躊躇しています。

①PHP5.2ではエラーが出ず、PHP7.3ではエラーがでる理由。
②単純にrestore_error_handler()と直した場合、最初の製作者の意図どおりの動きと同じになるのか。

以上2点アドバイスいただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっと調べた感じだとPHP5の時代から引数無しの関数みたいですから、最初から使い方が間違えていたのではないか?と思います。

(それを書いた人、現場により何か察せられるのではないかなぁ、とは思いますが外部の人間には全く分かりません。)

他に情報が無いのでなんとも言えませんが、

php

1set_error_handler(array($this,'errorHandler'));

php

1restore_error_handler(array($DB,'errorHandler'));

の間に起ったエラーに関してerrorHandlerに当たるメソッドで処理しようとしていた、という事かと思うので、内容で判断するしか無いと思います。

php7についてあまり触ってないので1に関してはまぁ、php7の方が色々厳しくなったんだろうな、くらいです。
(php5では、func_get_argsが使える前提だし色々余計な引数付けてても別にエラーは出なかったはずです。)

投稿2019/04/25 01:19

yoorwm

総合スコア1305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asus2

2019/04/25 01:35

ご回答ありがとうございました。 自分でもリファレンスを隅々までチェックしてみましたが引数が必要だった時代はありませんでした。最初から間違いがあったのですね。 もう作成者も関わっていた方もいないシステムなので内容吟味して対応したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問