私はいくつかのPHP拡張チュートリアルを行ってきましたが、既存の関数をどのようにオーバーロードするかに関する情報は見つかりませんでした。PHPエクステンションから関数をオーバーロードする方法は?
例えば、私はそれを行うことができる方法
PHP_FUNCTION(fopen)
{
if condition_is_true(condition)
original_fopen();
else
show_error();
}
のようなものにはfopen()を変更したいですか? ありがとうございます
PSです。 、ゴードン・リンクのおかげで解決策を見つけた:私は(Cで書かれた、.soのようにコンパイルし、httpd.confで含まれ、ない.PHPプログラム)拡張
に編集を意味します。
私は機能rename_function
のPECLパッケージをダウンロードしました。そのソースコードが必要との結論に私をリードしてきました:
その名前に基づいて、すべての関数のポインタを保持するグローバルハッシュテーブル
function_table
が、あります。zend_hash_find
/zend_hash_add
/zend_hash_del
この表で私が望むすべての変更を行うことができます。
私はあなたがそれを許可されることを真剣に疑っています。それはPHPに組み込まれたいくつかの関数に聖なる地獄を引き起こして、突然予想外の振る舞いをする。 – GordonM