Populate Object - Aumentando a produtividade de forma bastante simples (PHP + formulário HTML)

Publicado por Maurílio Henrique em 13/08/2010

[ Hits: 6.521 ]

 


Populate Object - Aumentando a produtividade de forma bastante simples (PHP + formulário HTML)



Olá pessoal, esta é a minha primeira contribuição com a comunidade VOL.

Estou desenvolvendo um framework em PHP para usar como ferramenta de desenvolvimento no meu dia a dia, e claro, visando uma maior produtividade escrevi um código "PopulateObject" que não faz nada de mais, apenas "linka" um formulário com um objeto, assim na hora de algum cadastro, não ficar dando sets e sets, lembrando que funciona apenas com projetos orientados a objeto.

Este conceito não é novo, certamente deve existir outros e outras formas, mas não há mal em divulgar mais uma.

Bom, o código em si é até bastante simples:

<?php
class PopulateObject {

   public static function populate(&$object, $_POST) {
      foreach ($_POST as $name => $value) {
         try {
            $object->set($name, $value);
         } catch (Exception $ex) {
            throw new Exception($ex->getMessage());
         }
      }
   }
}
?>

E para o script funcionar corretamente existem algumas regras:
  1. O sistema deve ser orientado a objeto.
  2. A classe deve conter os métodos get($prop) e set($prop,$value)
  3. Os campos html devem ter o mesmo nome dos atributos da classe.
  4. Use o method POST

Para usar veja este pequeno exemplo:

# formulario.html


<html>
    <form action="resposta" method="POST">
        <br><br><li>Formulario:</li>
        Id: <input name="id" id="id"><br>
        Atributo1: <input name="atributo1" id="atributo1"><br>
        Atributo2: <input name="atributo2" id="atributo2"><br>
        Atributo3: <input name="atributo3" id="atributo3"><br><br>
        Atributo3: <input name="atributo4" id="atributo4"><br><br>
        <input type="submit" value="Enviar">
    </form>
</html>

# classe.php

<?php

class Modelo1 {

   private $id;
   private $atributo1;
   private $atributo2;
   private $atributo3;

   function set($at, $vl) {  $this->$at = $vl; }
   function get($name) { return $this->$name; }

}

Usando o script:

function gravar() {
   $modelo = new Modelo1();
   PopulateObject::populate($modelo, $_POST);
   try {
      Modelo1DAO::insert($modelo);
      Fyphp::forward("Views/mensagens/operacaoSucesso.php");
   } catch (Exception $ex) {
      Fyphp::forward("Views/mensagens/operacaoFalha.php");
   }
}

Bom, é isso, sinta-se livre pra fazer o que quiser com o código.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Livro sobre Joomla - Criando Componentes Comerciais

Portabilidade de métodos construtores em PHP

Plugin com controle de acesso para CakePHP 3

Exemplo de conexão ao banco de dados orientada a objeto em PHP+MySQL

Forçando quebra de linha em tabelas HTML usando PHP

  

Comentários
[1] Comentário enviado por removido em 13/08/2010 - 13:48h

Cuidado com SQL injection, não é nada recomendado trabalhar assim...

[]'s

[2] Comentário enviado por mhrc em 13/08/2010 - 15:25h

No caso uso addslashes e stripslashes nos get/sets...





Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts