大佬教程收集整理的这篇文章主要介绍了多种形式的通用PHP函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个小型应用程序,其中有9种不同的表单,每种表单都有至少40个字段,用户必须在其中输入一些数据.
我已经在单个PHP文件中编写了每种表单,并制作了一个主PHP文件,其中我仅在页面中间添加了表单.
我的问题是:
我不想为每种形式编写9个不同的函数,因为时间太长了,我也不认为这是最佳实践,所以有没有办法或想法可以帮助我制定一个可以通过的通用函数一些变量并将数据添加到数据库.
我可以喜欢遍历$_POST数组并提取数据并以某种方式重新格式化吗?
但是话又说回来,每个字段都有不同的名称,我似乎无法做到这一点.@H_403_10@
尝试这种方式:
<?PHP
abstract class FormData
{
const BooleAN = 'bool';
const IntegeR = 'int';
const FLOAT = 'float';
const StriNG = 'String';
protected $_types = array();
public static function create($data)
{
$action = isset($data['action']) ? $data['action'] : '';
switch ($action)
{
case 'form1': return new MyForm1($data);
default: return null;
}
return null;
}
protected function loadPostVars($data)
{
foreach ($data AS $var=>$value)
{
$value = $this->convertVar($var, $value);
if (!is_null($value) && property_exists($this, $var))
{
$this->$var = $value;
}
}
}
protected function convertVar($var, $value)
{
if (array_key_exists($var, $this->_types))
{
$type = $this->_types[$var];
switch ($typE)
{
case FormData::BooleAN: return (bool)(int)$value;
case FormData::IntegeR: return (int)$value;
case FormData::FLOAT: return (float)$value;
case FormData::strinG: // drop down
default:
return myEscapeString($value);
}
}
return null;
}
}
class MyForm1 extends FormData
{
public $fld1;
public $fld2;
public $fld3;
// etc...
public function __construct($data)
{
$this->_types = array(
'fld1' => FormData::IntegeR,
'fld2' => FormData::strinG,
'fld3' => FormData::BooleAN,
);
$this->loadPostVars($data);
}
}
// And finally process your form data
// You should add hidden input 'action' to each form to identify the form
if ($form = FormData::create($_POST))
{
echo $form->fld1, $form->fld2, $form->fld3;
}
else
{
exit('error: unkNown action provided');
}
?>
该解决方案必须改进-我已经非常快地编写了它.但我希望您能理解主要思想.希望这会有所帮助.当然,您可以在每个表单类中添加特定的方法来处理请求等.
以上是大佬教程为你收集整理的多种形式的通用PHP函数全部内容,希望文章能够帮你解决多种形式的通用PHP函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。