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


Passing optional configuration variables on class initialization in PHP

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

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

您可以先提供所需的方法参数,然后再提供具有默认参数的方法参数,使它们成为可选参数。

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

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

你可以让构造函数采用一个一般的$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;
    }
}