【问题标题】:classes assigning variables automatically类自动分配变量
【发布时间】:2011-10-30 19:42:47
【问题描述】:

我正在上课,我希望能够自动分配从 ajax 请求发布的变量。

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

这个功能会非常方便,因为他们这样做是一种更清洁的方式。

【问题讨论】:

标签: php oop


【解决方案1】:

考虑以下设置:

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())。

【讨论】:

  • 是的,这实际上可能是一个更好的选择。
【解决方案2】:

尝试:

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

但是你的方式看起来像是没有经过深思熟虑的解决方案。

【讨论】:

  • 如果$_POST 包含垃圾并且未经过验证或清除,则会将其全部添加到对象中。不是很干净...
  • @BoltClock 肯定的——但整个想法不是很干净。
猜你喜欢
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
相关资源
最近更新 更多