gpt4 book ai didi

PHP - 访问不区分大小写的对象属性?

转载 作者:可可西里 更新时间:2023-11-01 13:51:52 24 4
gpt4 key购买 nike

我正在开发一个旧应用程序,其中使用的命名约定存在很多不一致之处。

有没有一种方法可以忽略大小写来访问对象属性?

例如,我有一个名为 currentuser 的对象,其属性为 Name。

有没有办法像这样检索该值?

$currentuser->name

感谢任何建议。

谢谢。

最佳答案

好吧,您可以为您的每个类编写一个 __get 函数来处理这种转换,但它非常 hacky。这样的事情可能会起作用:

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;
}

但我强烈建议您不要采用这种方法。从长远来看,将所有变量转换为一致的命名方案会更聪明。

关于PHP - 访问不区分大小写的对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com