Pular para o conteúdo

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

Dica publicada em PHP / Avançado
Maurílio Henrique mhrc
Hits: 7.125 Categoria: PHP Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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());
         }
      }
   }
}
?>
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

Escovando bits em PHP: operações bitwise e uma função debug

Cadastrar eventos/compromissos no Google Agenda com cURL [PHP]

PHP Debug

Funções com nomes variáveis em PHP, isso existe sim!

Lista de discussão de desenvolvedores PHP de Minas Gerais

#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

Entre na sua conta para comentar.