Ben bir karmaşık ve çok boyutlu diziyi saklayan bir PHP sınıfı var ve ben PHP5 en __ get yöntemini kullanmaya karar verdi bu dizi için bir arayüz olarak bireysel erişim yöntemlerinin yazmak yerine.
Ben bu sihirli erişimcilerini yazmaya başladı ben en iyi uygulamalar burada ne hiçbir fikrim yoktu o bana giydiğinde, o yüzden sorayım dedim. Içinde büyük bir if / else yapısı (olsun) ortak __ mi?
Ben başvuru için sınıfın küçük bir pasajı yer verdik:
<?php
class Project {
private $data;
public function __construct($d) {
$this->data = $d;
}
public function __get($val) {
if ($val === 'title')
return $this->data['info']['projectName'];
else if ($val === 'id')
return $this->data['info']['projectID'];
else if ($val == 'health') {
switch($this->data['info']['health']) {
case 'OT':
case 'NS':
case 'LR':
return 'Low Risk—Healthy';
break;
case 'CR':
return 'Critical Risk—Action Needed';
break;
default:
return 'Unknown';
}
}
}
}
?>
Sonra ben gibi veri erişim ediyorum:
$o = new Project($array);
echo $o->title; #etc