【问题标题】:Form value handling表单值处理
【发布时间】:2018-11-20 02:45:23
【问题描述】:

在提交表单时,是否有更好/更懒/更快/更有效的方法将 $_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'];
}

【问题讨论】:

  • 你解决了错误的问题。查看什么是 SOLID 原则
  • 如果你 json_encode 然后 json_decode $_POST 变量(嗯,任何关联数组)你最终会得到一个非常相似的结构......或通过foreach循环。但是您真正缺少的是验证/清理/转义数据

标签: php forms input


【解决方案1】:

可能是这样的:

<?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) ""
}

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2017-01-26
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多