これについてまともな考えを求める:
PHPコードに、任意の外部コードを実行し、インクルージョンの1つが失敗した場合にコールバック関数を呼び出すメカニズムを実装したいと思います( include
、require
+ *_once
)。
外部コードとは、実行されるコードが私によって作成されておらず、制御できないことを意味します。テスト用に含まれています。したがって、インクルージョンの失敗に関する詳細な情報をより深く持つことは役に立ちます。
PHPの致命的なエラーが発生したときにコールバックを行うことが不可能に見えるという問題に直面しています。
私がこれまでに試したこと:
- -を介したエラーハンドラの登録
set_error_handler
-致命的なエラーでは機能しません。 - メソッドを使用してオブジェクトインスタンスを作成しました
__destruct()
-致命的なエラーで呼び出されません。 - シャットダウン関数を登録しました-致命的なエラーでは呼び出されません。
debug_backtrace
これらのいずれにおいても、私はaをフェッチして、与えられた情報を処理したかっただけです。
したがって、すぐに質問があります。PHPコード内から失敗したファイルインクルードを追跡し、関数を呼び出す方法です。
私の最近の試みと検索からの質問への答えがノーであると私は恐れているので、洞察に満ちたものは何でも高く評価されます。たとえあなたの答えが「不可能」な点を強化するだけだとしても。
さらに、どのファイルが含まれるかを見つけることができる場合にも役立ちます。したがって、少なくとも含める前に(失敗するかどうかにかかわらず)デバッグ出力を作成することができます。
備考:
- 拡張機能なしが望ましい。しかし、何かがあれば、私も知りたいです。
- 外部コードとは、実行されるコードが私によって作成されておらず、制御できないことを意味します。テスト用に含まれています。したがって、インクルージョンの失敗に関する詳細な情報をより深く持つことは役に立ちます。
関連している:
- エラー時にPHPにバックトレースを生成させるにはどうすればよいですか?
- set_error_handler()は、致命的なエラー(
register_shutdown_function
+error_get_last
)に対して機能しません