类自动分配变量


classes assigning variables automatically

我正在制作一个类,我希望能够自动分配从ajax请求发布的变量。

function assign_vars() {
    foreach($_POST as $index => $value) {
        if($index == 'car_year') {
            $this->car_year = $value;
        }
    }
}
这个函数将是非常方便的,如果他们做这个更干净的方式。

考虑以下设置:

class ClassName
{
  /* Init with default values. */
  protected $_vars = array(
      'car_year' => null
    , ...
  );
  public function assign_vars( $array )
  {
    $this->_vars =
      array_merge($this->_vars, array_intersect_key($array, $this->_vars));
  }
}
$obj = new ClassName();
$obj->assign_vars($_POST);

assign_vars()中,array_merge()将覆盖$_vars中的值,但仅当它们已经存在时(多亏了array_intersect_key())。

Try with:

function assign_vars() {
    foreach($_POST as $index => $value) {
        $this->$index = $value;
    }
}

然而,你走的路看起来像是没有经过深思熟虑的解决方案。