gpt4 book ai didi

php - 用于从表单中获取值的动态表单类

转载 作者:可可西里 更新时间:2023-10-31 23:04:22 25 4
gpt4 key购买 nike

我正在使用 Form 类以静态方式获取表单的值。一切都很棒。但我想动态地做。我想要一个表单类来完成不同表单的工作。在 display() 方法中,我得到名称、电子邮件、密码、电话等的值。我希望当有更多或更少的值或以另一种形式存在时,Form 类动态地为我完成这项工作。我该怎么做?

//This is Register.php
public function display()
{
Form::setname($_POST['name']);
Form::email($_POST['email']);
Form::password($_POST['pass']);
Form::repassword($_POST['rpass']);
Form::phone($_POST['phone']);

list($name,$b,$c,$d,$e)=Form::getall();
}

<?php
//This is Form.php
class Form
{
private $name;
private $email;
private $pass;
private $rpass;
private $phone;

public static function setname($name)
{
$this->name=$name; // Using $this when not in object context
}

public static function email($email)
{
$this->email=$email;
}

public static function password($pass)
{
$this->pass=$pass;
}

public static function repassword($rpass)
{
$this->rpass=$rpass;
}

public static function phone($phone)
{
$this->phone=$phone;
}

public static function getall()
{
$a=$this->name;
$b=$this->email;
$c=$this->pass;
$d=$this->rpass;
$e=$this->phone;
return [$a,$b,$c,$d,$e];
}
}

最佳答案

要做到这一点,您需要做一些事情。首先,避免静电。从概念上讲,每个表单都应该由它自己的对象表示。第二,使用PHP提供的魔术方法。这些非常强大,如果使用得当,可以实现一些疯狂的好设计。第三,对单个表单中的所有输入元素使用具有单个名称的数组表示法,例如,对于表单元素的名称:使用类似于:User[email] 而不仅仅是 emailUser[name] 而不仅仅是 name 等等。

牢记这些,表单类可以如下所示:

class Form{

private $variables = array();

public function __get($name){
$returnValue = null;
if(isset($this->variables[$name])){
$returnValue = $this->variables[$name];
}
return $returnValue;
}

public function __set($name, $value){
$this->variables[$name] = $value;
}

public function getAll(){
return $this->variables;
}

}

这对于您需要的功能应该足够了。此外,您可以添加一个我发现非常有用的便利功能。这可以命名为 setAttrubitessetAll 函数。它会是这样的:

public function setAll($allData){
foreach($allData as $key => $data){
$this->variables[$key] = $data;
}
}

这将允许您使用如下命令一次性设置所有变量:

$form = new Form();
$form->setAll($_POST['User']);

为了实现这一点,正如我之前提到的,所有输入元素都应该分组到一个数组中。所以输入元素应该是这样的:

<input type="text" name="User[name]" />
<input type="text" name="User[email]" />

希望你明白...

关于php - 用于从表单中获取值的动态表单类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29070531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com