2010-06-02 7 views
13

Hago mucho desarrollo de ASP.NET MVC 2, pero estoy trabajando en un pequeño proyecto en el trabajo y debe hacerse en PHP.Publicación de formulario de PHP, mapeo automático a un objeto (enlace de modelo)

¿Hay algo incorporado en PHP para hacer el enlace de modelo, asignando campos de formulario a una clase? Algunos de mi código PHP se ve actualmente como esto:

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

    $EntryForm = new EntryForm(); 

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

¿Hay algo incorporado a una instalación típica de PHP que harían tales como la cartografía que iba a encontrar en ASP.NET MVC, o requiere un adicional ¿marco de referencia?

Respuesta

10

no nativa, pero una mejor solución que le permite utilizar sus propias clases o una clase estándar ...

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

Y entonces usted puede utilizarlo como:

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

$entry = populateWithPost(new EntryForm()); 

o

$obj = populateWithPost(); 
+0

¡Gracias! Un pequeño cambio y funcionó perfectamente. foreach ($ _POST as $ key => $ value) { $ obj -> $ key = trim ($ value); } –

+0

¡Lo siento! Gracias, lo soluciono! :) – Mahomedalid

+0

Genial solución !!! ¡Me ayudo mucho! –

1

¿Incorporado a PHP? Nº

La respuesta marco que insinúan es donde usted necesita ir para este (después de todo, ASP.NET es un marco también)

+1

publicación anterior, lo sé, pero solo aclarando ... ASP .NET no es un Framework. .NET es un Framework. –

+0

@devlincarnate ASP.NET __es un framework__. Citando del sitio web oficial de ASP.NET, "ASP.NET es un marco web de código abierto para la creación de aplicaciones web modernas ..." [Sitio web ASP.NET] (https://www.asp.net/) –

0

Nada integrada de PHP para esto. Pero es fácil de implementar en su clase de EntryForm. Puede agregar public function populate($post) a EntryForm y pasarle la variable $ _POST. Se abriría y si el atributo de clase existe, establézcalo. De hecho, puede crear una clase abstracta que implemente populate() y extenderla con su Formulario de inscripción o cualquier otra forma que desee. También querrás desinfectar la entrada, por supuesto.

1

Lo que está buscando es una capa ORM (asignación de relación de objetos). PHP tiene un par, uno de los cuales es Doctrine. Dicho esto, la respuesta de mahomedalidp es muy útil para hacer las cosas en PHP.

+0

sí, creo que una capa completa de ORM es la mejor solución. – Mahomedalid

Cuestiones relacionadas