On 02/04/2011 08:44 PM, Thijs Lensselink wrote:
> On 02/04/2011 08:38 PM, Steve Staples wrote:
>> On Fri, 2011-02-04 at 20:25 +0100, Thijs Lensselink wrote:
>>> 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
>>>
>>> <?php
>>>
>>> namespace somenamespace;
>>>
>>> function mail() {
>>>   // do something!
>>> }
>>>
>>>
>>> You don't actually overwrite the core function but it's close.
>>>
>>> <?php
>>>
>>> use somenamespace;
>>>
>>> mail() // will call the namespaced function
>>>
>>> \mail() // will call the core function
>>>
>>
>> The reason i was hoping to override the function, was because then if
>> the script has updates, then i would need to change all references of
>> mail() to my_mail()   or if i am not using < 5.3  (and what is runkit or
>> apd??)
>>
>>
> 
> APD is the Advanced PHP Debugger. That reffers to the first link you

refers :)

> added. And runkit is a PHP extension which allows you to override
> functions, classes, etc.
> 
> http://php.net/manual/en/book.runkit.php
> 


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

Reply via email to