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

Passing optional configuration variables on class initialization in PHP

请多多包涵,因为我对 OOP 概念还很陌生,所以我的想法可能大错特错。

我正在为一些我经常使用的功能开发 class,我希望它可以在任何新项目的初始化中进行配置。这里需要注意的是,我想设置某些默认变量并允许它们在默认设置正确的情况下保持未配置状态。这里有一些代码试图使概念更清晰。

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);

就如何设置 class 配置而言,我的方向是否正确?如果是这样,我如何使 param_a 和 param_b 可选?

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

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

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

另一种方法是使用 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;
    }

}