Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robson Silva

[Resolvido] Converter tipo de objetos

Recommended Posts

Boa tarde.

Quando utilizo mysql_fetch_object ele me retorna um objeto do tipo stdClass com os dados que vem do banco.

 

Preciso converter esse objeto para o tipo Noticia.

 

A classe notícia tem a seguinte estrutura:

 

class Noticia extends Object
{
  private $titulo;
  private $data;
  private $texto;
}

Ela herda os métodos da classe object que tem a estrutura

 

abstract class Object
{
  public function __set($variavel, $valor){ $this->$variavel = $valor; }
  public function __get($variavel){ return $this->$variavel; }
}

Alguém tem alguma idéia para resolver isto?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, mas não entendi a sua solução.

Toda vez que eu precisar fazer um cast tenho que usar a função draw?

 

Não tem um jeito diferente?

Ou este é o melhor jeito para se fazer isto?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Toda vez que eu precisar fazer um cast tenho que usar a função draw?

 

O método draw foi apenas para ilustrar o padrão, você deve utilizá-lo com as interfaces de seus objetos.

 

Não tem um jeito diferente?

Ou este é o melhor jeito para se fazer isto?

 

Tudo depende da situação, se você tiver um objeto que implementa uma interface e precisar utilizá-lo em uma situação que espera uma interface diferente o padrão Adapter é sim a mellhor solução.

 

Se o seu contexto for apenas o mysql_fetch_object então o padrão Adapter não é o ideal e você deve definir o tipo do objeto que deseja receber na própria função http://forum.imasters.com.br/public/style_emoticons/default/seta.gif mysql_fetch_object

 

Retornando um stdClass

if ( is_resource( $rs = mysql_query( 'SELECT * FROM usuarios' ) ) ){
while ( ( $row = mysql_fetch_object( $rs , 'Usuarios' ) ) !== false ){
	var_dump( $row );
}

mysql_free_result( $rs );
} else {
var_dump( mysql_error() );
}

 

Saída:

object(stdClass)#1 (3) {
 ["id"]=>
 string(1) "1"
 ["email"]=>
 string(19) "usuario@dominio.com"
 ["senha"]=>
 string(40) "7751a23fa55170a57e90374df13a3ab78efe0e99"
}

Retornando um objeto do tipo Usuarios

class Usuarios {
private $id;
private $email;
private $senha;
}

if ( is_resource( $rs = mysql_query( 'SELECT * FROM usuarios' ) ) ){
while ( ( $row = mysql_fetch_object( $rs , 'Usuarios' ) ) !== false ){
	var_dump( $row );
}

mysql_free_result( $rs );
} else {
var_dump( mysql_error() );
}

 

Saída:

object(Usuarios)#1 (3) {
 ["id":"Usuarios":private]=>
 string(1) "1"
 ["email":"Usuarios":private]=>
 string(19) "usuario@dominio.com"
 ["senha":"Usuarios":private]=>
 string(40) "7751a23fa55170a57e90374df13a3ab78efe0e99"
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.