请耐心等待我,因为我对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可选?
答案 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;
}
}