正确初始化类属性的方法

时间:2014-12-03 17:04:02

标签: php

我有一个属性的类。我实现的方式是在构造函数中初始化对象,并在另一个方法中单独初始化其属性。所以这就是它的样子 -

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。感谢。

1 个答案:

答案 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");