初始化类属性的正确方法


Proper way to initialize property of class

我有一个带有属性的类。我的实现方式是在构造函数中初始化对象,并在另一个方法中单独初始化其属性。所以它看起来像——

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进行了测试)我可以用"@"抑制它,但如果有的话,我正在寻找更好的解决方案。谢谢。

您正在尝试从构造函数存储邮件程序,但没有一个名为 set $mailer变量。

同样在 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");