2

別の名前で新しい関数を作成したり、以前の名前で使用されていたすべての関数の名前を新しいものに変更したりせずに、組み込みのphp関数の戻り値を変更するにはどうすればよいですか?例えば

function time() {
    return time()-1000;
}

もちろん、これは通用しません。「function time()extends time(){}」などはありませんか?

4

3 に答える 3

5

APD PECL拡張機能を使用すると、組み込み関数の名前を変更したり、オーバーライドしたりできます。

//we want to call the original, so we rename it
rename_function('time', '_time()');

//now replace the built-in time with our override
override_function('time', '', 'return my_time();');

//and here's the override
function my_time($){
        return _time()-1000;  
}

APDはデバッグを目的としているため、これは本番コードで実際に検討する必要のある手法ではありません。

于 2011-07-10T10:44:20.957 に答える
2

それをしてはいけない。

使用も検討してdate_default_timezone_set()くださいsetlocale()

于 2011-07-10T10:36:48.013 に答える
1

とにかくPHPの関数をオーバーライドしたいのはなぜですか?一部の関数が希望どおりに機能しない場合は、独自の関数を作成してください。オーバーライドする場合は、別の名前を使用するか、クラスを作成してその中に関数を配置します。

あなたが達成しようとしているのは、問題に対する間違った解決策です!!!

いくつかの例

関数名の代わりに作成time()できますcTime()(カスタム時間)私が自分の方法で配列を印刷するためprint_r()の独自の関数を作成するのと同じようにprintr()

またはのようなもの

class FUNCTIONS {
    public function time() {
        return time()-1000;
    }
}
//Now access using
FUNCTIONS::time();
于 2011-07-10T11:01:32.603 に答える