Peki, böyle bir dönüşümü ele edeceğini sınıfların her bir __get
işlev yazabilirsiniz, ama oldukça hacky bulunuyor. Böyle bir şey işe yarayabilir:
class HasInconsistentNaming {
var $fooBar = 1;
var $Somethingelse = 2;
function __get($var) {
$vars = get_class_vars(get_class($this));
foreach($vars as $key => $value) {
if(strtolower($var) == strtolower($key)) {
return $this->$key;
break;
}
}
return null;
}
}
Şimdi, bunu yapabilirsiniz:
$newclass = new HasInconsistentNaming();
echo $newclass->foobar; // outputs 1
Size görev biraz basitleştirmek istiyorsanız bu işlevselliği sağlayan bir sınıf devralmasını baz sınıfları olabilir. Bu şekilde sizin sınıfların her fonksiyon yazmak zorunda değilsiniz:
class CaseInsensitiveGetter {
function __get($var) {
$vars = get_class_vars(get_class($this));
foreach($vars as $key => $value) {
if(strtolower($var) == strtolower($key)) {
return $this->$key;
break;
}
}
return null;
}
}
class HasInconsistentNaming extends CaseInsensitiveGetter {
var $fooBar = 1;
var $Somethingelse = 2;
}
Ama ben kesinlikle bu yaklaşım sizi vazgeçirmek istiyorum. Uzun vadede, sadece tutarlı bir adlandırma düzeni içine tüm değişkenleri dönüştürmek çok daha akıllı olurdu.