2010-06-02 61 views
13

我做了很多ASP.NET MVC 2开发,但我正在处理一个小型项目,它需要在PHP中完成。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中发现,还是需要一个额外的框架?

回答

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(); 
+0

谢谢!一个小小的变化,它完美运作。 foreach($ _POST as $ key => $ value) { $ obj - > $ key = trim($ value); } – 2010-06-02 15:32:36

+0

对不起!谢谢,我修好了! :) – Mahomedalid 2010-06-02 22:50:18

+0

亲和解决方案!帮助了我很多! – 2016-01-30 16:01:01

1

内置到PHP?

你暗示了该框架的答案是,你需要去这一个号(毕竟,ASP.NET是太框架)

+1

旧帖子,我知道,但只是澄清.... ASP .NET不是一个框架。 .NET是一个框架。 – 2015-02-17 19:20:05

+0

@devlincarnate ASP.NET __确实是一个framework__。从ASP.NET的官方网站引用,“ASP.NET是一个用于构建现代Web应用程序的开源Web框架...”[ASP.NET网站](https://www.asp.net/) – 2017-03-12 07:53:33

0

没有内置到PHP这一点。但易于在您的EntryForm类中实现。您可以将public function populate($post)添加到EntryForm并将它传递给$ _POST变量。它会遍历并且如果类属性存在,请设置它。实际上,您可以构建一个抽象类来实现populate(),并使用EntryForm或任何其他您想要的形式对其进行扩展。当然,您也需要清理输入。

1

你正在寻找的是一个ORM(对象关系映射)层。 PHP有一对,其中之一是Doctrine。也就是说,mahomedalidp的答案在PHP中完成任务非常方便。

+0

是的,我认为完整的ORM层是最好的解决方案。 – Mahomedalid 2010-06-02 22:51:41

相关问题