正确的方法来初始化类的属性
我有一个属性类。我实现的方式是该对象在构造函数中初始化,其属性在另一个方法内单独初始化。因此,这里是什么样子 -正确的方法来初始化类的属性
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;
}
}
但是,我得到“试图获得非对象的属性”,即使邮件已和PHPMailer的初始化通知(我用的var_dump测试如图所示代码)我可以用“@”来压制它,但如果有任何问题,我正在寻找更好的解决方案。谢谢。
您试图从构造函数中存储邮件程序,但是您没有名为$ mailer set的变量。
同样在PHPMailer中,一切都开始大写,因此也必须大写。
您还缺少半列。
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", "[email protected]");
对不起,我的代码确实有$ mailer,当我发布时,错误地在声明中输入$ a。对于To属性,我将其切换为addAddress方法。但我仍然得到同样的错误。 – user30646 2014-12-03 18:10:41
@ user30646它看起来像构造函数是行为奇怪,然后,你可以尝试并把$ this-> mailer = new PHPMailer;在设置功能? – Jordy 2014-12-03 18:16:22
这可以解决问题。但事实证明,在我的代码中的某处,我没有提供所有参数,而是调用set方法。解决之后,问题就解决了。我不知道这是如何与我得到的错误相关,但它修复了错误。谢谢你的时间。 – user30646 2014-12-03 18:52:36
向我们展示完整的错误。 – Flosculus 2014-12-03 17:23:07
其余的只是错误来自的文件名。 – user30646 2014-12-03 18:12:18