首页 > 解决方案 > 表单值处理

问题描述

提交表单时是否有更好/更懒惰/更快/更有效的方法将 $_POST 值分配给类的属性?什么才是最佳实践?在现实世界中处理这个问题的最佳方法是什么?

public function __construct()
{
  $this->field1 = $_POST['field1'];
  $this->field2 = $_POST['field2'];
  $this->field3 = $_POST['field3'];
  $this->field4 = $_POST['field4'];
  $this->field5 = $_POST['field5'];
  $this->field6 = $_POST['field6'];
  $this->field7 = $_POST['field7'];
  $this->field8 = $_POST['field8'];
  $this->field9 = $_POST['field9'];
  $this->field10 = $_POST['field10'];
}

标签: phpformsinput

解决方案


可能是这样的:

<?php

$_POST['bar'] = 'Soap';

class DirtyFoo
{
    public $bar;
    public $baz;
}

$foo = new DirtyFoo;
foreach($foo as $p => $v)
    $foo->$p = $_POST[$p] ?? '';

var_dump($foo);

输出:

object(DirtyFoo)#1 (2) {
["bar"]=>
string(4) "Soap"
["baz"]=>
string(0) ""
}

推荐阅读