Recuperar dependente /-mãe a partir de dentro de método entidade domínio
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.
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):
- Como um iria sobre como recuperar um objeto dependente / pai de uma entidade?
- é
$person->getAddress()
uma boa maneira de recuperar o objeto Endereço de um pessoa do banco de dados? - Se esta uma boa maneira de fazer isso, então o que seria o olhar um código como?
- Está tudo bem para usar o objeto $ domínio dentro do método getAddress?
- Está tudo bem para manter as informações relação na classe Pessoa?
Quanto respostas ir:
- Neste caso
$person->getAddress()
parece uma boa escolha, você sabe, agradável e descritivo. ; -) - Não vejo um problema:. Person A Endereço, para obter esse endereço você perguntar o objeto pessoa por for
- 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
- & 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;
}
}