嗯,我有一個配置對象,其中包含各種對象的設置。我的類是在運行時生成的,因爲我想要初始化一個尚未創建的類的新對象,因此它們依賴於配置對象來知道哪些屬性是必需的,以及其他一些信息: 認爲它有點像這樣的:PHP isset - 測試不區分大小寫
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
}
}
}
}
}
這將做的工作,但它需要更多的工作。我一直在尋找一個更好的解決方案...
我希望我不是混亂的,感謝您的幫助
..strtolower()? –
也許你應該將所有屬性轉換爲一種情況(可能是小寫)。 – Oyeme
我不想那樣做,因爲程序員會失去它的蹤跡。 :) –