在PHP中设置引用类型

时间:2012-08-29 17:20:50

标签: php

我目前正在使用类似

的内容
class User{

    /* @var Contacts*/
    public $contacts = array();
}

$userObj = new User();
$userObj->contacts[] = new Contact(...);
$userObj->contacts[] = new Contact(...);

我们可以使用phpDocumentor记录变量的类型,是否也可以限制其他类型的对象分配给contacts数组

$userObj->contacts[] = 2.3 //should be considered as invalid

2 个答案:

答案 0 :(得分:2)

$contacts声明为私有,并使用getter和setter方法。

Class User{

  private $contacts = array();

  function addContact($contact) {
    if (is_object($contact) && get_class($contact) == "Contact") {
      $this->contacts[] = $contact;
    } else {
      return false;
      // or throw new Exception('Invalid Parameter');  
    }
  }

  function getContacts() {
    return $this->contacts;
  }
}

答案 1 :(得分:2)

不是它在php中的运作方式

以下是您可以做的事情

class User{

    /* @var Contacts*/
    private $contacts = array();

    public function setContacts(Contact $contact){
        $this->contacts[] = $contacts;
    }
}

不,你可以这样使用它

$userObj = new User();
$userObj->setContacts(new Contact(...));

以下将导致错误

$userObj->setContacts(2.3);