OOP将config传递给设置值的类

时间:2014-02-20 22:03:26

标签: php oop config ini isset

我有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(我知道我不应该使用常量,但此时不改变大量代码我不知道该怎么做)

2 个答案:

答案 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