我有ini文件被解析并设置为一个类,它将每个值设置为常量或类变量。比如这个;
function set_val($vals){
define('VAL,$val['val']);
define('val1,$val['val1']);
....
此常量/变量设置最多可持续20个值。
确保$ val ['val1']值按OOP设置的适当方法是什么?似乎写了很多isset()s是不合适的。
是否适合创建一个采用$ vals数组并确保键值存在的泛型类?
如果我使用上面提到的泛型类,我的理解是oop规则(组合优于继承?)说我不应该在set vals方法中创建泛型类对象?
在OOP加载配置时,确保密钥存在的适当解决方案是什么?
ps(我知道我不应该使用常量,但此时不改变大量代码我不知道该怎么做)
答案 0 :(得分:0)
我知道这会涉及很多isset()
但是,这是我能提出的最佳解决方案
function set_val($vals){
isset($val['val']) ? define('VAL,$val['val']); : 'false'; //Ignore false
答案 1 :(得分:0)
<?php
$ini_values=array('CONSTA'=>1,'CONSTC'=>3); //For testing
set_val($ini_values);
function set_val($ini_values){
$required_consts=array('CONSTA','CONSTB','CONSTC'); //Array of constants you need
//...
foreach($required_consts as $required_const){
if(!empty($ini_values[$required_const])){
define($required_const,$ini_values[$required_const]);
}else{
echo"<br />Value for $required_const missing<br />"; //Handle here
}
}
//...
}
//Show result for testing
echo CONSTA;
echo'<br />';
echo CONSTB;
echo'<br />';
echo CONSTC;
?>
输出:
Value for CONSTB missing
1
CONSTB
3