montano 0 Denunciar post Postado Setembro 15, 2009 bom dia, Bom estou programando em OO a alguns meses e ainda fico meio na duvida de boas praticas. Por exemplo, preciso fazer um insert, eu faço assim. class super{ function insert($tabela,$campos,$values,$where){ $this->execute("INSERT INTO $tabela ($campos) ($values) $where"); } } classe produto extends super{ //Outros metodos } $obj = new produto(); $obj->insert('tb_produto','produto','Produto A',''); Foi uma maneira de eu encontrei para facilitar meus processos, mas as vezes eu preciso validar alguns campos ou pesquisar conteudos em uma tabela apartir de um FK. eu fico na duvida se jogo os meus $_GET, $_POST para dentro da classe como propriedades. EX: class super{ function insert(){ $this->execute("INSERT INTO $this->tabela (produto) ($this->produto)"); } } classe produto extends super{ public $produto; public $tabela; } $obj = new produto(); $obj->produto = $_GET['produto']; $obj->tabela = 'tb_produto'; $obj->insert(); Nao sei se fui claro, mas a minha duvida é: como saber quando se deve criar propriedades ou quando enviar como parametro para uma function. vlw Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Setembro 15, 2009 Bom estou programando em OO a alguns meses e ainda fico meio na duvida de boas praticas. mas a minha duvida é: como saber quando se deve criar propriedades ou quando enviar como parametro para uma function. A POO oferece o encapsulamento que é justamente isso. Tente sempre que possível, deixar suas propriedades privadas e utilize setters e getters para modificá-las. abstract class AbstractProduct { public function insert( $table ){ $data = get_object_vars( $this ); printf( 'INSERT INTO `%s`(`%s`) VALUES("%s");' , $table , implode( '`,`' , array_keys( $data ) ) , implode( '","' , $data ) ); } } class Product extends AbstractProduct { private $table; protected $name; public function getName(){ return $this->name; } public function getTable(){ return $this->table; } public function insert(){ parent::insert( $this->table ); } public function setName( $name ){ $this->name = $name; } public function setTable( $table ){ $this->table = $table; } } $teste = new Product(); $teste->setName( 'teste' ); $teste->setTable( 'tabela' ); $teste->insert(); Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Setembro 15, 2009 printf( 'INSERT INTO `%s`(`%s`) VALUES("%s");' , $table , implode( '`,`' , array_keys( $data ) ) , implode( '","' , $data ) ); Para que serve os %s , implode e esses array_keys? vlw Compartilhar este post Link para o post Compartilhar em outros sites
Will Fernando 2 Denunciar post Postado Setembro 15, 2009 Para que serve os %so %s indica parametro string se nao me engano .. nao tenho certeza :P mas é algo assim .. qualquer coisa da uma lida em ..http://br2.php.net/sprintf quanto a classe .. depende .. neste caso especifico que você apresento eu usaria o primeiro metodo pois você so vai utilizar aqueles valores naquele metodo .. mas caso essa classe tivese mais metodos que utilizariam estes mesmos valores .. ai seria interressante torna-los atributos da classe .. valww =] Compartilhar este post Link para o post Compartilhar em outros sites