在PHP中的类初始化时传递可选的配置变量

时间:2015-01-04 22:09:47

标签: php class oop

请耐心等待我,因为我对OOP概念很陌生,所以我的想法可能会出错。

我正在为我经常使用的某些功能开发一个类,我希望它可以在初始化的任何新项目中进行配置。需要注意的是,我想设置某些默认变量,如果默认值没有,则允许它们保持未配置状态。这里有一些代码可以让这个概念更加清晰。

class someClass{

    // Setting parameter defaults
    private $param_a = 60;
    private $param_b = 100;

   /*
    * The construct function. What I'd like to do here is make the param_a and param_b optional,
    * i.e if it doesn't get set on initialization it takes the defaults from the class.
   */

   function __construct($param_a, $param_b, $foo){
       // do something ...
   }    
}

$foo = "some value";

// init example using defaults
$someclass = new someClass($foo); // $param_a and $param_b should be 60 and 100 respectively

// init example using custom options
$someclass = new someClass(40, 110, $foo);

就如何设置课程配置而言,我是否朝着正确的方向前进?如果是这样,我如何使param_a和param_b可选?

2 个答案:

答案 0 :(得分:3)

function __construct($foo, $param_a = 60, $param_b = 100){
   // do something ...
} 

您可以首先提供必需的方法参数,然后提供具有默认参数的参数,使其成为可选参数。

然后将这些赋值给构造函数中的类变量。

另一种方法是使用func_get_args()并解析它。

答案 1 :(得分:2)

你可以让构造函数接受一般的$ args参数并将其与默认数组合并:

public function __construct($args = array()) {

    $args = array_merge(array(
        'param_a'   => 60,
        'param_b'   => 100,
        'foo'       => null
    ), $args);

    foreach($args as $key => $val) {
        $this->$key = $val;
    }

}