Etki alanı varlık yöntemi içinde bağımlı / ebeveyn alınıyor

2 Cevap php

Nasıl bir varlık bir bağımlı / ebeveyn nesne alma hakkında gitmek istiyorum.

$person->getAddress();

Bu veritabanından o kişi için adres nesne almak ve bir nesne olarak dönmelidir. Bu iyi bir yapmak için bir yolu ve bunu nasıl ok ise kod gibi görünmelidir olduğunu.

Doing this would mean that the object itself should be aware that address is an entity/value object that it is related. Why i want this kind of syntax is because it will look clean in the presentation layer.

Kişi sınıfı bu gibi görünecektir:

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'];
  }
}

Bu yüzden getAddress yöntemi içinde $ etki alanı nesnesini kullanmak ve Person sınıfta ilişkisi bilgileri tutmak için ok?

Ben bir cevap için tüm bakan oldum, çünkü cevap verin.

2 Cevap

Zend_Db_Table Relationships bir göz atın. Onlar tam olarak, ve çok daha fazlasını yapıyor sağlar. Sen sadece onun yerine, kendi uygulama ile gelip çalışırken, Zend_Db_Table today kullanabilir veya kendi tasarım kararları WRT için Zend Framework code eğitim görebilirsiniz sizin sorular. Bu oldukça bir yetkili kaynağıdır.

First I think the title of the question isn't very clear, second I'm not entirely sure I understand what is being asked... In my opinion both the title and the post really should be edited to clean it up a bit.

Sonrası 5 soru (Ben tefsir olabilir eğer) içeren görünüyor:

  1. Nasıl bir varlık bir bağımlı / ebeveyn nesne alma hakkında gitmek istiyorsunuz?
  2. Is $person->getAddress() a good way to retrieve the Address object for a person from the database?
  3. Bu iyi bir yol yapmak için eğer o zaman kod neye benzer ki?
  4. Bu getAddress yöntemi içinde $ etki alanı nesnesini kullanmak için tamam mı?
  5. Bu Person sınıfta ilişkisi bilgileri tutmak için tamam mı?

Bildiğim kadarıyla cevaplar gibi gidip:

  1. Bu durumda $person->getAddress() güzel ve açıklayıcı iyi bir seçim, bilirsiniz, görünüyor. ;-)
  2. Eğer olduğu için kişi nesneyi sormak adresinizi almak için, Person HAS A Adres: Ben bir sorun görmüyorum.
  3. Biraz dağınık olmasına rağmen verilen kod örneği, bu cevap gibi görünüyor. Ben sadece adres üye nesne yaptık, ama çoğunlukla aynı şey bunun dışında
  4. & 5.. Çoğunlukla tat, öncelik ve tasarım bağımlılık meselesi vardır söyleyebilirim. Gerçekten bu temiz bir kesim cevap yok. Ayrıca, burada semantik ya da gerçek bir hayat senaryo tartışıyoruz?

Cevap Nr.3 ile birlikte gitmek için bazı kod: (Ben o liste içinde düzgün çalışması için alamadım)

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;
    }
}