buscarObject

Resumo : neste tutorial, você aprenderá como usar o fetchObject()método para buscar a próxima linha de um conjunto de resultados e retorná-la como um objeto.

Introdução ao método fetchObject()

Suponha que você tenha uma pulisherstabela:

CREATE TABLE IF NOT EXISTS publishers (
    publisher_id INT AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    PRIMARY KEY (publisher_id)
);Linguagem de código:  PHP  ( php )

e uma Publisheraula:

<?php

class Publisher
{
    private $publisher_id;
    private $name;
}Linguagem de código:  PHP  ( php )

Para buscar cada linha da publisherstabela e retorná-la como um Publisherobjeto, você usa o fetchObject()método:

public function fetchObject(
    string|null $class = "stdClass", 
    array $constructorArgs = []
): object|falseLinguagem de código:  PHP  ( php )

O fetchObject()é um método da PDOStatementclasse. Ele busca a próxima linha do conjunto de resultados associado a um PDOStatementobjeto e retorna um objeto de uma classe. Se o fetchObject()método falhar, ele retornará false.

O fetchObject()método possui dois parâmetros:

  • $classespecifica a classe do objeto a ser retornado. Se você omitir, o fetchObject()método retornará uma instância da stdClassclasse.
  • constructorArgsé uma matriz que especifica os argumentos passados ​​para o construtor do arquivo $class.

O fetchObject()mapeia as colunas da linha com as propriedades do objeto com as seguintes regras:

  • Primeiro, atribua o valor da coluna à propriedade com o mesmo nome.
  • Segundo, chame o __set()método mágico se uma coluna não tiver uma propriedade na classe com o mesmo nome. Caso a classe não possua __set()método mágico, crie uma propriedade pública com o valor derivado da coluna.

Exemplo do método PHP fetchobject()

O exemplo a seguir mostra como usar o fetchObject()método para buscar uma linha da publisherstabela e retornar um Publisherobjeto:

<?php

class Publisher
{
    private $publisher_id;
    private $name;
}

// connect to the database
$pdo = require 'connect.php';

// execute the query
$sql = 'SELECT publisher_id, name 
        FROM publishers 
        WHERE publisher_id=:publisher_id';

$statement = $pdo->prepare($sql);
$statement->execute([':publisher_id' => 1]);

// fetch the row into the Publisher object
$publisher = $statement->fetchObject('Publisher');

var_dump($publisher);Linguagem de código:  PHP  ( php )

Saída:

object(Publisher)#3 (2) { 
    ["publisher_id":"Publisher":private]=> string(1) "1" 
    ["name":"Publisher":private]=> string(21) "McGraw-Hill Education" 
}Linguagem de código:  PHP  ( php )

Como funciona.

Primeiro, defina uma Publisherclasse com duas propriedades publisher_ide name:

class Publisher
{
    private $publisher_id;

    private $name;
}Linguagem de código:  PHP  ( php )

Segundo, conecte-se ao bookdbbanco de dados usando o connect.phpobjeto:

$pdo = require 'connect.php';Linguagem de código:  PHP  ( php )

Terceiro, execute uma instrução preparada que selecione um editor com id 1 na publisherstabela:

// execute the query
$sql = 'SELECT publisher_id, name 
        FROM publishers 
        WHERE publisher_id=:publisher_id';

$statement = $pdo->prepare($sql);
$statement->execute([':publisher_id' => 1]);Linguagem de código:  PHP  ( php )

Finalmente, retorne um Publisherobjeto:

$publisher = $statement->fetchObject('Publisher');Linguagem de código:  PHP  ( php )

Observe que se a Publisherclasse tiver um namespace, você precisará passar um nome de classe totalmente qualificado. Por exemplo:

<?php

namespace phptutorial;

class Publisher
{
    private $publisher_id;
    private $name;
}

// connect to the database
$pdo = require 'connect.php';

// execute the query
$sql = 'SELECT publisher_id, name 
        FROM publishers 
        WHERE publisher_id=:publisher_id';

$statement = $pdo->prepare($sql);
$statement->execute([':publisher_id' => 1]);

// fetch the row into the Publisher object
$publisher = $statement->fetchObject('phptutorial\Publisher');

var_dump($publisher);Linguagem de código:  PHP  ( php )

Observe a primeira linha que define o namespace phptutorial:

namespace phptutorial;
Linguagem de código:  PHP  ( php )

E a linha que usa o método fetchObject():

$publisher = $statement->fetchObject('phptutorial\Publisher');
Linguagem de código:  PHP  ( php )

Resumo

  • Use o fetchObject()método para buscar a próxima linha de um conjunto de resultados e retorná-la como um objeto de uma classe.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *