Ну, вы можете написать __get
функцию для каждого из ваших классов, которая бы справилась с таким преобразованием, но это довольно хакерски. Примерно так может работать:
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;
}
}
Теперь вы можете сделать это:
$newclass = new HasInconsistentNaming();
echo $newclass->foobar; // outputs 1
Если вы хотите немного упростить свою задачу, ваши базовые классы могут наследоваться от класса, который предоставляет эту функциональность. Таким образом, вам не нужно писать функцию для каждого из ваших классов:
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;
}
Но я бы сильно отговорил вас от такого подхода. В конечном итоге было бы намного разумнее просто преобразовать все переменные в единую схему именования.