Ir para conteúdo
Fórum Script Brasil
  • 0

object(stdClass)[4]


Frank K Hosaka

Pergunta

Desde 2020 é que estudo o PHP e em 2022 comecei a brincar com o Laravel. O melhor brinquedo que eu encontrei nesse tempo todo foi o var_dump, ele é mais poderoso que o echo, pois ele consegue exibir na tela muito mais que uma string, como é o caso do registro de um banco de dados. object(stdClass) é um nome inventado pelo PHP para guardar informações do tipo registro do banco de dados. Ele tem várias camadas, assim object(stdClass)[0], object(stdClass)[1]... mas na hora de usar o var_dump, ele só mostra o quinto "atributo";

Muito mais bacana que o var_dump( ) é o dd( ) do Laravel, ele é fantástico. O dd( ) mostra uma montanha de informações a respeito de uma variável, além de parar a execução do programa. O único problema é que ele só funciona no Laravel.

Nessa nova pesquisa, eu acabei encontrando um método do PDO chamado fetchObject( ), e ele tem a mesma funcionalidade do fetch_assoc( ) do mysqli, ele só mostra o primeiro registro que encontrar pelo caminho, e não mais que isso.

Para testar isso, usei o seguinte código:

<body style="width:500px;margin:0 auto;margin-top:50px">
<?php
class Conn
{
    private static $instancia;
    private $pdo;

    private function __construct()
    {
      $this->pdo=new PDO("mysql:host=localhost;dbname=diario","root","");
    }

    static function instancia()
    {
        if(!self::$instancia)
        {
            self::$instancia=new self();
        }
        return self::$instancia;
    }
    
    function select($sql,$params=[])
    {
        $stmt=$this->pdo->prepare("select $sql");
        for($i=0;$i<count($params);$i++)
        {
          $stmt->bindParam($i+1,$params[$i]);
        }
        $stmt->execute();
        return $stmt->fetchObject(); // alterar para fetchAll(PDO::FETCH_OBJ)
    }
        
}
$codprod=2;
$produto=Conn::instancia()->select("* from tbprod where codprod > ? limit 2",[$codprod]);
var_dump($produto);
?>
</body>

resultado:
C:\wamp64\www\Astudy\index.php:36:
object(stdClass)[4]
  public 'codprod' => int 3
  public 'un' => string 'pc' (length=2)
  public 'prod' => string 'Chave Fenda Teste Rayco' (length=23)
  public 'custo' => string '2.50' (length=4)
  public 'marg' => float 30
  public 'codbar' => string '7898338092162' (length=13)
  public 'loc' => string '4B6b' (length=4)
  public 'emb' => float 12
  public 'cf' => string '82054000' (length=8)
  public 'codforn' => string 'e380482' (length=7)
  public 'estoque' => float 12
  public 'origem' => int 0
  public 'vazio' => null
  public 'venda' => string '3.50' (length=4)

Os quatro últimos campos desse registro violam o principio básico do banco de dados, ninguém calcula o estoque dentro da tabela de produtos ou coloca o preço de venda lá ou cria um campo para não ter nenhuma informação como o 'vazio'. No meu caso, precisei fazer essa gambiarra para poder comparar o meu banco de dados com o banco de dados da Bling que montei a partir das planilhas que eles fornecem.

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...