On 02/04/2011 04:59 PM, Steve Staples wrote:
> On Fri, 2011-02-04 at 07:51 -0800, Jim Lucas wrote:
>> On 2/4/2011 5:37 AM, Steve Staples wrote:
>>> Hello Guys/Gals,
>>> it's friday (at least where I am it is) and I have an issue with a
>>> script that I just started using again.  The problem is, is that it uses
>>> the built in PHP mail() function, and on my testing server, mail()
>>> doesn't work. The other issue, is that I use SMTP Auth to connect to my
>>> mail server, so that when mail sends out, it comes from my mail server
>>> so that there is less of a chance for being marked as SPAM.
>>> So, what I am looking to do, is use either the trust old Pear::Mail or
>>> PHPMailer scripts (I am sure there are other ones out there, but those
>>> are the 2 I am most familiar with).
>>> So now to my actual question.  How can I override the built-in PHP
>>> mail() function, to let either of those 2 (or something else someone may
>>> suggest) to act in the same manner as the mail() function?
>>> Is this easy?  I've googled, but haven't seen any reference to doing
>>> what I am looking to do (maybe I just can't google)
>>> Steve
>> You cannot "override" a function.  You will have to write a new function,
>> "my_mail" or some such.  Have it take the same arguments as the built in mail
>> function, but internally it uses phpmailer or the likes.  Then, do a search 
>> and
>> replace for " mail(" with " my_mail("
>> One other possible option, which I had not contemplated until now, would be 
>> to
>> actually specify a replacement sendmail executable when setting up the 
>> sendmail
>> option in the php.ini.  You could specify a php script that can run as 
>> though it
>> was sendmail, accept the same arguments, etc... but do all the phpmailer 
>> stuff
>> inside.
>> Jim Lucas
> after posting this, and doing some more googleing, I found this:
> http://ca.php.net/manual/en/function.override-function.php
> it says you can override built-in php functions... I haven't tested to
> see if i can do it, but it seems possible... has anyone used this
> before?  and will it do what I need?  (this has been put on the back
> burner for today, so tonight I will look more deeper into this unless
> someone else has any luck in the mean time)
> TIA!
> Steve

In PHP versions < 5.3 you need something like runkit or apd. In PHP 5.3
and up you could use monkey patching


namespace somenamespace;

function mail() {
  // do something!

You don't actually overwrite the core function but it's close.


use somenamespace;

mail() // will call the namespaced function

\mail() // will call the core function

PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to