Doktrini PHP: Polimorfik Dernekler

0 Cevap php

Ben kullanarak Doctrine PHP ORM 2.0. Am

Ben uygulamak istiyorum ne, aşağıdaki sınıf hiyerarşisi. (Bu ne, doğru yazılmış PHP, ne Doktrin açıklamaları doğru kullanımı olduğu gibi, aşağıdaki kod parçası yürütmek için başarısız olur unutmayın.)

@MappedSuperclass
abstract class Location {}

@Entity
class GeoId {
  @Column(type = "float") $latitude;
  @Column(type = "float") $longitude;

  // this is the part that my question concerns
  @???
  $location; // any subclass of location can go here
}

Şimdi, Yer alt sınıfları için biz, örneğin, City, State ve Country sürebilir. Veya Adress, biz çok özel olmasını istiyorum. Bu sınıf hiyerarşisi hakkında biraz daha fazla bilgi için:

class Adress  { $parent; /* of type City, ... some other attributes */ }
class City    { $parent; /* of type State */ }
class State   { $parent; /* of type Country */ }
class Country {}

(Yukarıdaki hiyerarşi cevabım Tablo-başına-Class çözüm yolunda yalın olur.)

Questions:

  1. Bir varlık bir polimorfik özelliği var, ve eğer öyleyse, onu nasıl uygularım mümkün mü?
  2. Hangi ne devralma stratejisi ben Yer sınıf hiyerarşisi (yani MappedSuperclass, Tek Masa veya Sınıf-Tablo miras) stratejiler tercih edilir (aşağıda görüldüğü gibi), ve uygulamak?

0 Cevap