-1

重複の可能性:
組み込み PHP 関数の再定義

こんにちは!

私のサーバーにはローカルで利用可能な「sendmail」コマンドがなく、API 互換の代わりの mail() 関数を書いたので、PHP の組み込みの mail() 関数を実際に置き換えるにはどうすればよいですか? (またはその他。それ以上の交換が必要なものがいくつかあります。)

ありがとう!

4

4 に答える 4

7

交換mailは、この問題を解決するための間違った方法です。

メールを送信する必要があるがmailコマンドを呼び出せない場合は、他の方法を使用できるサードパーティのPHPメーリングライブラリを使用する必要があります。 SwiftMailerが頻繁に推奨されます。を使用したり、互換性のあるバイナリmailを呼び出したり sendmail、SMTPサーバーを直接使用したりできます。さらに、プラグインアーキテクチャのおかげで、他の方法でメールを送信するように拡張できます。

PHPビルトインを置き換えたい場合は、PHPではなくコードが間違っている可能性があります。確かに、PHPビルトインの中にはひどいものもありますが、関数の予想される動作を変更されたバージョンに置き換えると、コードの将来のメンテナがあなたを眠りにつけたくなるでしょう。

于 2011-04-30T15:34:10.053 に答える
6

理論的には APD override_function を使用してこれを行うことができますが、それを行うことは本当にお勧めしません。

関数に別の名前を付けて、メールの代わりにその名前を使用できない理由はありますか?

あなたが絶対に主張するなら、http://php.net/manual/en/function.override-function.php

于 2011-04-30T15:24:16.080 に答える
4

これをチェックしてください:http://php.net/manual/en/function.override-function.php

bool override_function ( string $function_name , string $function_args , string $function_code ) 

組み込み関数をシンボル テーブルで置き換えることによりオーバーライドします。

于 2011-04-30T15:23:31.183 に答える
2

runkit_function_redefine()、しかし、これは行うべきではないため、「承認された」方法とは呼びません。

于 2011-04-30T15:23:08.960 に答える