重複の可能性:
組み込み PHP 関数の再定義
こんにちは!
私のサーバーにはローカルで利用可能な「sendmail」コマンドがなく、API 互換の代わりの mail() 関数を書いたので、PHP の組み込みの mail() 関数を実際に置き換えるにはどうすればよいですか? (またはその他。それ以上の交換が必要なものがいくつかあります。)
ありがとう!
重複の可能性:
組み込み PHP 関数の再定義
こんにちは!
私のサーバーにはローカルで利用可能な「sendmail」コマンドがなく、API 互換の代わりの mail() 関数を書いたので、PHP の組み込みの mail() 関数を実際に置き換えるにはどうすればよいですか? (またはその他。それ以上の交換が必要なものがいくつかあります。)
ありがとう!
交換mail
は、この問題を解決するための間違った方法です。
メールを送信する必要があるがmail
コマンドを呼び出せない場合は、他の方法を使用できるサードパーティのPHPメーリングライブラリを使用する必要があります。 SwiftMailerが頻繁に推奨されます。を使用したり、互換性のあるバイナリmail
を呼び出したり sendmail
、SMTPサーバーを直接使用したりできます。さらに、プラグインアーキテクチャのおかげで、他の方法でメールを送信するように拡張できます。
PHPビルトインを置き換えたい場合は、PHPではなくコードが間違っている可能性があります。確かに、PHPビルトインの中にはひどいものもありますが、関数の予想される動作を変更されたバージョンに置き換えると、コードの将来のメンテナがあなたを眠りにつけたくなるでしょう。
理論的には APD override_function を使用してこれを行うことができますが、それを行うことは本当にお勧めしません。
関数に別の名前を付けて、メールの代わりにその名前を使用できない理由はありますか?
あなたが絶対に主張するなら、http://php.net/manual/en/function.override-function.php
これをチェックしてください:http://php.net/manual/en/function.override-function.php
bool override_function ( string $function_name , string $function_args , string $function_code )
組み込み関数をシンボル テーブルで置き換えることによりオーバーライドします。
runkit_function_redefine()
、しかし、これは行うべきではないため、「承認された」方法とは呼びません。