
Hi Brian, Ok I looked at the problem in more details. *Short answer:* The warning is a strict warning indicating that you are calling a method as if it is a static method but the method is not declared static (despite what the documentation indicates). *Long answer:* Its small bug/glitch/feature in the implementation of the of the factory method - to be specific in the Mail.php the following line: function &factory($driver, $params = array()) should read: static function &factory($driver, $params = array()) By adding this "static" keyword the STRICT warning will disapear. I do not really think it is a bug but instead it is a feature - I believe they left out the static keyword since it was only introduced in PHP5, by not using they keyword they make the PEAR::Mail class compatible with PHP4 aswell - at the cost of getting a very small insignificant warning. Full details - I created the following test program: <?php error_reporting(E_STRICT); include "Mail/Mail-1.1.14/Mail.php"; $mail = Mail::factory("sendmail", array()); print "hello world"; ?> And was fully able to recreate the problem - i was using PEAR version 1.9 PEAR::Mail version 1.1.14 PHP version 5.2.10 I hope this helps. Regards Michael Pedersen Brian Ngure wrote:
Hi Michael,
The version of Pear::Mail I was using was 1.1.14. I also tried updating to the latest beta version 1.2.0b2 but I still got the same error. I will try update my php version to the latest as well and see if that helps. Thanks.
On Tue, Sep 15, 2009 at 5:44 PM, Michael Pedersen <sku@kaal.dk> wrote:
Hi Brian (and other skunks),
*Short answer:*
Upgrade to a more recent version of PEAR::Mail - namely a version higher than 1.1.7 in the version 1.1.7 change-log it states that they specifically fixed this issue:
- Mail::factory() now returns object references without generating PHP warnings.
See: http://pear.php.net/package/Mail/download/1.1.7
*Long answer:*
I have not checked the code - but looking at the error message it seems as if they are accessing another static function/attribute from within the static factory function - however they are using the old/wrong way of doing this ( this::attributename ) instead of ( self::attributename )
In short the version of the code you are using have not been fixed (fully) to run with PHP5
Regards Michael Pedersen
Brian Ngure wrote:
Hi,
To any PHP/Pear gurus. I am getting the following error in PHP5. Anyone know how to resolve?
Non-static method Mail::factory() should not be called statically, assuming $this from incompatible context
The method factory is static as noted here: http://pear.php.net/manual/en/package.mail.mail.factory.php.
This code works fine in PHP4.