表单输入到类属性

时间:2013-12-23 11:23:42

标签: php forms class oop constructor

我正在尝试学习OO PHP并且我正在开发一个内容管理器项目,我想从一个html表单开始构建一个对象。

例如,如果我有一个带有十个文本框(或其他类型的输入)的表单,我以POST模式发送表单,然后我想从POST数据开始构造我的对象。

我必须将它们作为构造函数的参数传递,还是作为数组传递?怎么样?

只是一个例子:

我的小表格:姓名,姓氏,描述(但可能有十多个输入)

我的$ _POST数组:('name'=>'Mario','surname'=>'Rossi','description'=>'这里只是一个描述。')

我的课程:

class Person {
    private $name;
    private $surname;
    private $description;

    public function __contruct(/*arguments or array here*/) {
    }
}

3 个答案:

答案 0 :(得分:0)

简洁明了的解决方案是使用json_decodejson_encode函数。

http://php.net/json_decode

$object = json_decode(json_encode($_POST['formdata']), FALSE);

json_decode将您的formdata转换为序列化对象,而json_encode的第二个参数(false)会阻止数据转换回array

答案 1 :(得分:0)

不要在函数中直接使用$_POST而是将其作为参数发送到函数

来自CLASS对象的函数调用:

$args = array(
   'val1' => $_POST['val1'],
   'val2' => $_POST['val2'],
   'val3' => $_POST['val3']
);
$obj->funct($args);

CLASS中的函数定义:

public function funct ($param = array()) {
   print_r( $param );
}

答案 2 :(得分:0)

如果您的表单的数据超过一个Person,那么一个Person不足以代表您的表单!

有一个类PersonForm(或者它可能是什么名称),并传入$_POST数组作为参数。

PersonForm然后可以使用数组中的一些数据创建(new或使用PersonFactory类)Person对象。