Dan*_*Dan 6 php properties object
我正在开发一个旧应用程序,其中使用的命名约定存在很多不一致之处.
有没有办法访问忽略区分大小写的对象属性?
例如,我有一个名为currentuser的对象,其属性为Name.
有没有办法像这样检索这个值?
$currentuser->name
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏
谢谢.
好吧,您可以__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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以这样做:
$newclass = new HasInconsistentNaming();
echo $newclass->foobar; // outputs 1
Run Code Online (Sandbox Code Playgroud)
如果您想稍微简化您的任务,您可以让您的基类继承自提供此功能的类。这样您就不必为每个类编写函数:
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;
}
Run Code Online (Sandbox Code Playgroud)
但我强烈建议您不要采取这种方法。从长远来看,将所有变量转换为一致的命名方案会更明智。
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |