Ben bir varsayılan değere sahip Hash nesneyi başlatılamıyor Ruby Hash uygulanmasını seviyorum. Şu anda ben PHP benzer bir nesne uygulama ile mücadele ediyorum. Bu, benim ilk (çalışma dışı) vurulur.
class DefaultArray extends ArrayObject {
protected $_defaultValue;
public function setDefault($defaultValue) {
$this->_defaultValue = $defaultValue;
}
public function offsetExists($index) {
return true;
}
public function offsetGet($index) {
if(!parent::offsetExists($index)) {
if(is_object($this->_defaultValue))
$default = clone $this->_defaultValue;
else
$default = $this->_defaultValue;
parent::offsetSet($index, $default);
}
return parent::offsetGet($index);
}
}
$da = new DefaultArray();
assert($da["dummy"] == null);
$da->setDefault = 1;
assert($da["dummy2"] == 1);
İkinci iddia başarısız olur. Kodu atlama offsetGet denir ve yan tümcesi yürütüldüğünde olduğunu gösterir. Yine de herhangi bir dizi değeri null. Alternatif uygulamalar için herhangi bir fikir?
Ben yazma yoruldum
if(!isset($myarr['value']))
$myarr['value'] = new MyObj();
$myarr['value']->myVal=5;
yerine sadece yazma
$myarr['value']->myVal=5;