我做了很多ASP.NET MVC 2开发,但是我正在处理一个小项目,需要在PHP中完成。
PHP内置了什么模型绑定,将表单字段映射到类?我的一些PHP代码目前看起来像这样:
class EntryForm
{
public $FirstName = "";
public $LastName = "";
}
$EntryForm = new EntryForm();
if ($_POST && $_POST["Submit"] == "Submit")
{
$EntryForm->FirstName = trim($_POST["FirstName"]);
$EntryForm->LastName = trim($_POST["LastName"]);
}
在典型的PHP安装中是否有内置的功能可以像在ASP.NET MVC中找到的那样进行映射,还是需要额外的框架呢?
答案 0 :(得分:10)
不是原生的,而是一个更好的解决方案,允许您使用自己的类或标准类......
function populateWithPost ($obj = NULL)
{
if(is_object($obj)) {
} else {
$obj = new StdClass ();
}
foreach ($_POST as $var => $value) {
$obj->$var = trim($value); //here you can add a filter, like htmlentities ...
}
return $obj;
}
然后您就可以使用它:
class EntryForm
{
public $FirstName = "";
public $LastName = "";
}
$entry = populateWithPost(new EntryForm());
或
$obj = populateWithPost();
答案 1 :(得分:1)
内置于PHP?否。
框架回答你提示你需要去哪一个(毕竟,ASP.NET也是一个框架)
答案 2 :(得分:1)
您正在寻找的是ORM(对象关系映射)层。 PHP有一对,其中一个是Doctrine。也就是说,mahomedalidp的答案非常方便用PHP完成任务。
答案 3 :(得分:0)
没有内置于PHP中。但是在EntryForm类中很容易实现。您可以将public function populate($post)
添加到EntryForm
并将其传递给$ _POST变量。它会遍历,如果class属性存在,请设置它。实际上,您可以构建一个实现populate()
的抽象类,并使用您的EntryForm或您想要的任何其他形式扩展它。当然,你也想要对输入进行消毒。