1 Yacoby genel cevaptır. Bildiğim kadarıyla ben aşağıdaki gibi bir şey yapmak ister başka bir yöntemle içine mantığı taşıma hakkında yaptığı ipucu olarak:
class MyClass
{
protected $_initialized = false;
public function construct($data = null)
{
if(null !== $data)
{
$this->init($data);
}
}
public function init(array $data)
{
foreach($data as $property => $value)
{
$method = "set$property";
if(method_exists($this, $method)
{
$this->$method($value);
}
$this->_initialized = true;
}
return $this;
}
public function isInitialized()
{
return $this->_initialized;
}
}
Şimdi sadece sınıf bir setMyPropertyMEthod ekleyerek i sonra sadece array('myProperty' => 'myValue')
gibi bir dizi olarak veri ileterek __construct
veya init
ile bu özelliği ayarlayabilirsiniz. Nesne isInitialized
yöntemi ile "başlatıldı" ise, daha çok ben dışarıdan kolayca mantığı test edebilirsiniz. Şimdi yapabileceğiniz başka bir şey, bu başlatma veya inşaat sırasında ayarlanır emin olmak için ayarlanmış ve filtre gerekiyor "gerekli" özelliklerinin bir listesini ekleyin. O da size (ya da isterseniz setOptions
) basitçe init
çağırarak belirli bir zamanda seçenekleri bir sürü ayarlamak için kolay bir yol sağlar.