Re: [PHP] override built-in mail()

2011-02-04 Thread Thijs Lensselink
On 02/04/2011 09:49 PM, David Harkness wrote:
> On Fri, Feb 4, 2011 at 12:42 PM, Hansen, Mike  wrote:
> 
>> I would opt for using my_mail and not overriding a built-in function. It
>> seems to me that it would just cause confusion for the next developer who
>> takes care of your code. You know, that psychopathic programmer that knows
>> your address. =)
>>
> 
> Yes, better to create your own function (or class) to abstract the mail()
> API of your choosing is the better route. You'll have to retrofit the script
> to use it, but you can then swap in different mail systems later without
> changing the client. Even when you don't anticipate needing to switch to a
> different provider, adding an abstraction layer from the start is often
> cheap enough to warrant the risk of never needing to change the
> implementation underneath.
> 
> David
> 

I should have added.

Running APD or runkit in production is probably not a good idea. And
renaming a core function just the same. Monkey patching is a nice
solution. But can cause confusion as well.

Like Mike and David say. Better role your own function / class for this.


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



Re: [PHP] override built-in mail()

2011-02-04 Thread David Harkness
On Fri, Feb 4, 2011 at 12:42 PM, Hansen, Mike  wrote:

> I would opt for using my_mail and not overriding a built-in function. It
> seems to me that it would just cause confusion for the next developer who
> takes care of your code. You know, that psychopathic programmer that knows
> your address. =)
>

Yes, better to create your own function (or class) to abstract the mail()
API of your choosing is the better route. You'll have to retrofit the script
to use it, but you can then swap in different mail systems later without
changing the client. Even when you don't anticipate needing to switch to a
different provider, adding an abstraction layer from the start is often
cheap enough to warrant the risk of never needing to change the
implementation underneath.

David


RE: [PHP] override built-in mail()

2011-02-04 Thread Hansen, Mike
 

> -Original Message-
> From: Thijs Lensselink [mailto:d...@lenss.nl] 
> Sent: Friday, February 04, 2011 12:48 PM
> To: php-general@lists.php.net
> Subject: Re: [PHP] override built-in mail()
> 
> 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

I would opt for using my_mail and not overriding a built-in function. It seems 
to me that it would just cause confusion for the next developer who takes care 
of your code. You know, that psychopathic programmer that knows your address. =)

 

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



Re: [PHP] override built-in mail()

2011-02-04 Thread Thijs Lensselink
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
>>>
>>> >>
>>> 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
>>>
>>
>> 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



Re: [PHP] override built-in mail()

2011-02-04 Thread Thijs Lensselink
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
>>
>> >
>> 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
>>
> 
> 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
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



Re: [PHP] override built-in mail()

2011-02-04 Thread Steve Staples
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
> 
>  
> 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
> 

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??)



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



Re: [PHP] override built-in mail()

2011-02-04 Thread Thijs Lensselink
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

http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] override built-in mail()

2011-02-04 Thread Steve Staples
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


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



Re: [PHP] override built-in mail()

2011-02-04 Thread Jim Lucas
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

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