我正在使用 pear 在 PHP 中发送邮件。我遵循了此处的示例 ( http://pear.php.net/manual/en/package.mail.mail.send.php )。但是,我收到此错误消息。
Strict Standards: Non-static method Mail::factory() should not be called statically in C:\xampp\htdocs\functions.php on line 43
所以我一直在努力让这个 Strict Standards 消息不出现。
这是我的代码:
$smtpinfo["host"] = "********";
$smtpinfo["port"] = "587";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = $mail_username;
$smtpinfo["password"] = $mail_password;
## This line below is causing the problem ##
$mail =& Mail::factory("smtp", $smtpinfo); // <-- Line 43
我读过很多Stack Overflow Q&A也就是说,只需在 $mail
的开头添加一个 @
。的确,它使错误消失了,但我觉得这只是隐藏了错误,并没有真正解决问题。
@$mail =& Mail::factory("smtp", $smtpinfo);
如何不静态调用上面的方法?
甚至此页面上的文档 ( http://pear.php.net/manual/en/package.mail.mail.send.php) 也说 This function cannot be called statically.
...但是他们给出的示例与我调用该方法的方式相同?!
请不要回答只是在前面添加 @
以删除严格标准或 E_ALL & ~E_STRICT
...这不是解决方案!
最佳答案
如果您看一下 PEAR Mail 类,您会发现它有几个实例在未将方法声明为静态时静态调用方法。
将 Mail.php
的第 74 行更改为:
function &factory($driver, $params = array())
到:
static function &factory($driver, $params = array())
另一个不太理想的选择是修改您的 php.ini
配置以忽略 E_STRICT
警告,但我相信修复错误消息的原因比隐藏它。
关于php - 如何不在 php 中静态调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22050416/