Pergunta

Como um iria sobre como recuperar um objeto dependente / pai de uma entidade.

$person->getAddress();

Isso deve recuperar o objeto Endereço para essa pessoa do banco de dados e devolvê-lo como um objeto. Será esta uma boa maneira de fazê-lo e como deve o olhar um código como se isso é ok para fazer.

Fazer isso significaria que o próprio objeto deve estar ciente de que o endereço é um objeto de entidade / valor que ele está relacionado. Por que eu quero este tipo de sintaxe é porque ele vai olhar limpo na camada de apresentação.

A classe pessoa ficaria assim:

class Person {
  protected $_domain = null; // domain is assigned when instantiated
  protected $_data = array('name', 'address');
  protected $_relations = array(
    'address'=>array(
      'class'=>'Address'
    )
  );
  protected $_retrievedRelations = array();
  public function getAddress() {
    if (array_key_exists('address', $this->_relations) ) {
      if (!array_key_exists('address', $this->_retrievedRelations) ) {
        $this->_retrievedRelations['address'] = $this->_domain->getAddress($this->_data['address']);
      }

      return $this->_retrievedRelations['address'];
    }

    return $this->_data['address'];
  }
}

Então, é ok para usar o objeto $ domínio dentro do método getAddress e para manter as informações relação na classe Pessoa?

Por favor resposta, porque eu estive procurando por toda parte uma resposta.

Foi útil?

Solução

Dê uma olhada Zend_Db_Table Relações . Eles permitem fazer exatamente isso, e muito mais. Você pode apenas usar Zend_Db_Table hoje , em vez de tentar chegar a sua própria implementação, ou você pode estudar de Zend Framework código para as suas decisões de design wrt às suas perguntas. É completamente uma fonte autorizada.

Outras dicas

Em primeiro lugar eu acho que o título da pergunta não é muito clara, segundo eu não sou inteiramente certo eu entendo o que está sendo perguntado ... Na minha opinião tanto o título como o post realmente deve ser editado para limpá-lo um pouco.

O post parece conter 5 perguntas (se eu poderia parafrasear):

  1. Como um iria sobre como recuperar um objeto dependente / pai de uma entidade?
  2. é $person->getAddress() uma boa maneira de recuperar o objeto Endereço de um pessoa do banco de dados?
  3. Se esta uma boa maneira de fazer isso, então o que seria o olhar um código como?
  4. Está tudo bem para usar o objeto $ domínio dentro do método getAddress?
  5. Está tudo bem para manter as informações relação na classe Pessoa?

Quanto respostas ir:

  1. Neste caso $person->getAddress() parece uma boa escolha, você sabe, agradável e descritivo. ; -)
  2. Não vejo um problema:. Person A Endereço, para obter esse endereço você perguntar o objeto pessoa por for
  3. O exemplo de código dado parece responder a isso, embora seja um pouco confuso. Eu teria feito apenas o endereço de um objeto membro, mas diferente do que é basicamente o mesmo
  4. & 5. eu diria que são principalmente uma questão de gosto, prioridade e design-dependência. Não há realmente uma resposta corte limpo para isso. Além disso, estamos discutindo semântica aqui ou um cenário da vida real?

Alguns código para ir junto com a resposta Nr.3: (eu não poderia fazê-lo funcionar corretamente dentro da lista)

class Person {
    protected $_domain = null; // domain is assigned when instantiated
    protected $_address;        // object

    public function getAddress() {
        if (!isset($this->_address) ) {
            $this->_address = $this->_domain->getAddressForPerson($this); // assuming $this contains some sort of ID
        }
        return $this->_address;
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top