php - 如何不在 php 中静态调用函数?

标签 php email methods pear

我正在使用 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/

相关文章:

Java-无法为正方形设置动画,以旋转正方形的形式出现

javascript - 为什么 'indexOf' 没有返回任何内容?

php - 1 个查询中有 2 个数据库

电子邮件设置 API 身份验证

php - 基于单个值从多维数组中删除数组

html - CSS 属性未出现在电子邮件中

email - Apple Mail 的 .emlx 数据结构的文档(用于转换目的)?

javascript - 方法如何针对 JavaScript 对象执行

PHP 通过引用传递问题

php - Android GZip 通过 PHP 到 MySQL BLOB