Re: [PHP] override built-in mail()
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()
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()
> -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()
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()
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()
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()
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()
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()
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