2010-06-02 19 views
13

Çok fazla ASP.NET MVC 2 geliştirme işlemi yapıyorum, ancak iş başında küçük bir proje ile uğraşıyorum ve PHP'de yapılması gerekiyor.PHP form gönderme, otomatik olarak bir nesneye eşleme (model bağlama)

PHP'ye, bir nesneyi form bağlama alanları eşleme, model bağlama yapmak için yerleşik bir şey var mı? Benim PHP kod bazıları halen şuna benzer:

class EntryForm 
{ 
    public $FirstName = ""; 
    public $LastName = ""; 
} 

    $EntryForm = new EntryForm(); 

if ($_POST && $_POST["Submit"] == "Submit") 
{ 
    $EntryForm->FirstName = trim($_POST["FirstName"]); 
    $EntryForm->LastName = trim($_POST["LastName"]); 
} 

şey dahili tipik bir PHP, ASP.NET MVC bulmak gibi böyle eşleme yapacağını yüklemek var mı, yoksa ek bir gerektirir çerçeve?

cevap

10

yerli değil ama kendi sınıfları veya standart sınıf kullanarak izin daha iyi bir çözüm ...

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; 
} 

Sonra hoşuna kullanabilirsiniz:

class EntryForm 
{ 
    public $FirstName = ""; 
    public $LastName = ""; 
} 

$entry = populateWithPost(new EntryForm()); 

veya

$obj = populateWithPost(); 
+0

Teşekkürler! Bir küçük değişiklik ve mükemmel çalıştı. foreach ($ _POST olarak $ anahtar => $ değer) { $ obj -> $ key = trim ($ value); } –

+0

Üzgünüz! Teşekkürler, düzelttim! :) – Mahomedalid

+0

Genial çözüm! Bana çok yardım etti! –

1

PHP'de yerleşik mi? No

bu biri için gitmek gerekir neredesin ipucu çerçeve cevaptır

Bunun PHP yerleşik

+1

eski gönderi, biliyorum, ama sadece açıklığa kavuşuyor .... ASP. NET bir Çerçeve değildir. .NET bir çerçevedir. –

+0

@devlincarnate ASP.NET __is gerçekten bir framework__. ASP.NET'in resmi web sitesinden alıntı yaparak, "ASP.NET, modern web uygulamaları oluşturmak için açık kaynak bir web ..." [ASP.NET Web Sitesi] (https://www.asp.net/) –

0

Hiçbir şey (sonuçta ASP.NET de bir çerçevedir). Ancak EntryForm sınıfınızda uygulanması kolay. public function populate($post)'u EntryForm'a ekleyebilir ve $ _POST değişkenini iletebilirsiniz. Dönecek ve sınıf özniteliği varsa, onu ayarlayın. Aslında, populate()'u uygulayan bir soyut sınıf oluşturabilir ve EntryForm'unuzla veya istediğiniz başka bir formla genişletebilirsiniz. Tabii ki girişi de sterilize etmek isteyeceksiniz.

1

Aradığınız şey bir ORM (Object Relationship Mapping) katmanıdır. PHP bir çift var, bunlardan biri Doctrine. Mahomedalidp'in cevabı PHP'de yapılan işleri yapmak için çok kullanışlı olduğunu söyledi.

+0

evet, tam bir ORM katmanının en iyi çözüm olduğunu düşünüyorum. – Mahomedalid

İlgili konular