php 大小写不敏感吗,PHP isset-测试大小写不敏感

标签:php

好吧,我有一个配置对象,其中包含各种对象的设置.我要实例化尚未创建的类的新对象时,便会在运行时生成我的类,因此,它们依靠config对象来了解哪些属性是必需的,以及其他一些信息:

大概是这样的:

Config

->Class1

->Attributes

->id

->Mandatory: true

->imagesource

->Mandatory: true

.................

->Class2

..........................

我有一个方法validateObject(),用于检查是否为对象设置了所有必需值,例如:

function validateObject($object){

$config = configObject[get_class($object)];

foreach($config->attributes as $attrName => $attrVal){

if($attrVal->mandatory == true){

if(!isset($object->$attrName){

throw Error();

}

}

}

}

到现在为止还挺好.碰巧现在,我的配置对象会将属性名称转换为camelCase.我决定让程序员使用他们希望使用的任何大小写,最后,我只想检查对象是否具有任何属性,将其变为小写,是否与配置为小写的Config匹配.

我目前的解决方案是

function validateObject($object){

$config = configObject[get_class($object)];

foreach($config->attributes as $attrName => $attrVal){

if($attrVal->mandatory == true){

$lowercaseAttr = str_to_lower($attrName);

foreach($object as $key => $value){

if(str_to_lower($key) == $lowercaseAttr){

//don't throw, move to the next attribute in config

}

}

}

}

}

尽管可以完成更多工作,但这可以完成工作.我一直在寻找更优雅的解决方案…

希望我不要混淆,谢谢您的帮助

解决方法:

我想到的唯一方法是向您的类添加类似于以下内容的函数

public function check($p){

$props =get_object_vars($this);

$array_to_search;

foreach($props as $key=>$prop){

$array_to_search[strtolower($key)] = strtolower($key);

}

echo "prop :".array_key_exists(strtolower($p),$array_to_search);

}

然后打电话

$obj->check("thingtwo");

阵列位可能已被优化,我只是将其快速组合在一起以查看它是否对您有用.如果您有许多类,则此函数可以分开放置,并且可以传入一个对象

function check($obj,$p){

$props =get_object_vars($obj);

$array_to_search;

foreach($props as $key=>$prop){

$array_to_search[strtolower($key)] = strtolower($key);

}

echo "prop :".array_key_exists(strtolower($p),$array_to_search);

}

check($myobj, "propertyname");

如果该属性存在,但以上内容将返回true,否则为null.您可以通过将功能更改为来检查值

function check($obj,$p){

$props =get_object_vars($obj);

$array_to_search;

foreach($props as $key=>$prop){

$array_to_search[strtolower($key)] = $prop;

}

echo "prop :".isset($array_to_search[strtolower($p)]);

}

标签:php

来源: https://codeday.me/bug/20191201/2083741.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值