2010-06-02 65 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

相關問題