我有一个属性的类。我实现的方式是在构造函数中初始化对象,并在另一个方法中单独初始化其属性。所以这就是它的样子 -
require_once('PHPMailerAutoload.php')
class myclass {
private $mailer;
public function __construct() {
$this->mailer = new PHPMailer;
}
public function set($host, $to) {
var_dump($this->mailer) // This returns object structure
$this->mailer->Host = $host;
$this->mailer->to = $to;
}
}
然而,我得到了"试图获得非对象的属性"注意即使mailer属性已经用PHPMailer初始化了。(我用代码中显示的var_dump进行了测试)我可以使用" @"来抑制它,但是如果有&#我正在寻找更好的解决方案39; s any。感谢。
答案 0 :(得分:2)
您正在尝试从构造函数中存储邮件程序,但您没有名为$ mailer set的变量。
同样在PHPMailer中,所有东西都开始大写,所以To也必须大写。
您也缺少分号。
require_once('PHPMailerAutoload.php');
class myClass {
private $mailer;
public function __construct() {
$this->mailer = new PHPMailer;
}
public function set($host, $to) {
var_dump($this->mailer);
$this->mailer->Host = $host;
$this->mailer->To = $to;
}
}
然后你想这样访问它。
$test = new myClass();
$test->set("asdf", "swdf@sdf.sd");