What I'm trying to do is create a domain model with a Plain Old PHP Object. The I'm creating a library which will do all the infrastructure stuff. So one of my models looks like this
class Project {
public $id;
public $name;
public $typeId;
private $type;
public function getType() {
return $this->type;
}
public function setType(Type $type) {
$this->typeId = $type->id;
$this->type = $type;
}
}
Şimdi eğer geçerli bir Type nesne ile yeni bir proje ve çağrı setType
oluşturmak ve proje ve tipi kaydedilir hem ORM kullanarak proje örneğini kaydedin. Ama sonra Projesi yüklemek ve ben ORM persitence gelen nesne yüklemek için şeffaf bu yöntemi modifiye etmiş istiyorum getType
yöntemini kullanın. Yani burada bu yöntem:
public function getType() {
return $this->type;
}
: şeffaf olarak değiştirilmiştir
public function getType() {
if (is_null($this->type) {
$this->type = $this->adapter->findById('table', $this->typeId);
}
return $this->type; // or return parent::getType();
}
Outlet PHP Project_Proxy denilen Projesi için bir proxy sınıf oluşturmak için eval kullanır ama bazen bu yüzden bir yol olup olmadığını Reflection API kullanarak bir çözüm arıyorum Projesi'nin alt sınıfları olacaktır.
Ben bir yöntem davranışını değiştirmek için arama google var ama yine de bulamadım
Edit: ya da proxy benim modeller için Sınıflar ve hepsini alt sınıflarını yaratmak için Outlet PHP'nin eval yöntemi kullanmak iyi bir fikir olurdu?