2014-12-03 69 views
0

我有一个属性类。我实现的方式是该对象在构造函数中初始化,其属性在另一个方法内单独初始化。因此,这里是什么样子 -正确的方法来初始化类的属性

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测试如图所示代码)我可以用“@”来压制它,但如果有任何问题,我正在寻找更好的解决方案。谢谢。

+0

向我们展示完整的错误。 – Flosculus 2014-12-03 17:23:07

+0

其余的只是错误来自的文件名。 – user30646 2014-12-03 18:12:18

回答

2

您试图从构造函数中存储邮件程序,但是您没有名为$ 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]"); 
+0

对不起,我的代码确实有$ mailer,当我发布时,错误地在声明中输入$ a。对于To属性,我将其切换为addAddress方法。但我仍然得到同样的错误。 – user30646 2014-12-03 18:10:41

+0

@ user30646它看起来像构造函数是行为奇怪,然后,你可以尝试并把$ this-> mailer = new PHPMailer;在设置功能? – Jordy 2014-12-03 18:16:22

+0

这可以解决问题。但事实证明,在我的代码中的某处,我没有提供所有参数,而是调用set方法。解决之后,问题就解决了。我不知道这是如何与我得到的错误相关,但它修复了错误。谢谢你的时间。 – user30646 2014-12-03 18:52:36

相关问题