Php 对象属性未被识别为数组

Php 对象属性未被识别为数组,php,Php,我有一个名为Mail的PHP类,在另一个类中,我想执行以下操作: if (is_array ( $mail->getToAddresses () )) { foreach ( $mail->getToAddresses () as $address ) { $mailer->addAddress ( $address ); } } 但if条件不匹配。它从不输入foreach代码。。。 如何指示该属性实际上是一个数组? 有

我有一个名为Mail的PHP类,在另一个类中,我想执行以下操作:

if (is_array ( $mail->getToAddresses () )) {
        foreach ( $mail->getToAddresses () as $address ) {
            $mailer->addAddress ( $address );
        }
}
但if条件不匹配。它从不输入foreach代码。。。 如何指示该属性实际上是一个数组? 有什么想法吗

邮件类别:

class Mail {

private $from;
private $fromName;
private $subject;
private $toAddresses;
private $ccAddresses;
private $bccAddresses;
private $message;

public function __construct() {
    $this->toAddresses = array();
    $this->ccAddresses = array();
    $this->bccAddresses = array();
}

public function addToAddress($toAddress) {
    $this->toAddresses = $toAddress;
}

public function addCcAddress($ccAddress) {
    $this->ccAddresses = $ccAddress;
}

public function addBccAddress($bccAddress) {
    $this->bccAddresses = $bccAddress;
}

public function getFrom() {
    return $this->from;
}

public function setFrom($from) {
    $this->from = $from;
}

public function getFromName() {
    return $this->fromName;
}

public function setFromName($fromName) {
    $this->fromName = $fromName;
}

public function getSubject() {
    return $this->subject;
}

public function setSubject($subject) {
    $this->subject = $subject;
}

public function getToAddresses() {
    return $this->toAddresses;
}

public function setToAddresses($toAddresses) {
    $this->toAddresses = $toAddresses;
}

public function getCcAddresses() {
    return $this->ccAddresses;
}

public function setCcAddresses($ccAddresses) {
    $this->ccAddresses = $ccAddresses;
}

public function getBccAddresses() {
    return $this->bccAddresses;
}

public function setBccAddresses($bccAddresses) {
    $this->bccAddresses = $bccAddresses;
}

public function getMessage() {
    return $this->message;
}

public function setMessage($message) {
    $this->message = $message;
}

public function __toString() {
    return "from=" . $this->from . ", fromName=" . $this->fromName . ", subject=" . $this->subject . ", message=" . $this->message; 
}
您的
addToAddress()
方法覆盖
toaddress
属性(因此使其成为字符串)。我相信您希望将以下内容添加到
toaddress
数组中:

public function addToAddress($toAddress) {
    $this->toAddresses[] = $toAddress;
}
此外,您可能希望向
setToAddresses()
setter添加类型提示,以便它不接受非数组:

public function setToAddresses(array $toAddresses) {
    $this->toAddresses = $toAddresses;
}

显示对象实例化的完整代码,请确保
$mail->getToAddresses()
返回一个数组…只需打印即可that@SherinJose它不是在打印数组。你知道为什么吗?你在代码中的哪里使用了
settoaddress
函数。错误可能是there@SherinJose可能是正确的-如果您正在调用方法
settoaddress
,并且它正在覆盖您在
构造方法中创建的数组,那么它将返回false,除非将数组传递给
settoaddress