PHP OOP: "Kimlik" ile Alan Varlıkları sağlanması

1 Cevap php

Burada soyut bir sorunun biraz. Ben Alan Modeli deseni ile deneme ve bağımlılıkları ile benim diğer Tussles kısıtlama kulüpler - Ben Kimlik Kart kullanmak için Kimlik üreten bazı tavsiyeler gerekir.

Gördüğüm Veri Mapper desen için çoğu örneklerde (bu kitapta özetlenen dahil olmak üzere: http://apress.com/book/view/9781590599099) - Kullanıcı el bir ayarlayıcı kullanarak belirli bir etki alanı nesnesi için kimliğini ayarlamak için görünür:

$UserMapper = new UserMapper;

//returns a fully formed user object from record sets
$User = $UserMapper->find(1);

//returns an empty object with appropriate properties for completion
$UserBlank = $UserMapper->get();
$UserBlank->setId();
$UserBlank->setOtherProperties();

Now, I don't know if I'm reading the examples wrong - but in the first $User object, the $id property is retrieved from the data store (I'm assuming $id represents a row id). In the latter case, however, how can you set the $id for an object if it has not yet acquired one from the data store? The problem is generating a valid "identity" for the object so that it can be maintained via an Identity Map - so generating an arbitrary integer doesn't solve it.

Benim şu anki düşünce kimlik için farklı alanlar (yani e-posta) aday ve boş Domain nesneleri üreten varlıklarını talep etmektir. Alternatif olarak, tüm nesnelerin tam oluşturulacak talep ve kimliklerinin gibi tüm özelliklerini kullanarak ... pek verimli.

(Veya alternatif olarak, ... Alan Modeli kavramını dökümü ve ben gördüğüm ORM uygulamalarına kıyasla giderek zarif görünen bir DBal / DAO / İşlem Script ... dönmek)

1 Cevap

You would use the setId function if you are controlling the IDs, if you want to override the data store ID, or if you want to update/delete the data without having to retrieve it first (i.e. already have the ID from a POST). Another alternative would be calling setId() to reserve an ID by "querying" (insert a record) the data store for the next available ID.

Bu kimlik aslında bir şey başvurmak için kullanmaya ihtiyacınız olana kadar ayarlanır ne gerçekten alakalı değil. Hiçbir parametre ile setId çağırarak yeni veri olarak bayrak nesne dışında hiçbir şey yapardı. Aslında "almak" için deneyin sonra ID tek oluşturulur olacağını durumdur. Sıralama tembel kimliği nesil.