Ben sadece başka bir şekilde düşündüm:
PHP5 sihirli yöntemler __get
kullanarak ve __set
onlar aslında ne zaman çizili özellikleri var gibi görünmesi olabilir. Bu yarar alan adları dönüştürülmüş bekliyoruz etmeyen, diğer bazı kod varsa, onlar hala çalışır edeceksiniz:
function __get($var) {
if (strpos($var, '-') !== false) {
$underscored = str_replace("-", "_", $var);
return $this->$underscored;
}
}
function __set($var, $val) {
if (strpos($var, '-') !== false) {
$underscored = str_replace("-", "_", $var);
$this->$underscored = $val;
}
}
echo $company->{'address-one'}; // "3 Sesame St"
echo $company->address_one; // "3 Sesame St"
// works as expected if you somehow have both dashed and underscored var names
// pretend: $company->{'my-var'} ==> "dashed", $company->my_var ==> "underscored"
echo $company->{'my-var'}; // "dashed"
echo $company->my_var; // "underscored"
Tabii ki, aslında elemanların sınıfına bu yöntemleri eklemek için bir yol bulmak zorunda. Ben bu tür bir şey ile çok iyi değilim, ama belki de, ya da bir sarıcı sınıf oluşturarak PHP'nin Yansıma işlevleri kullanarak çalışır.