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 pulishers
tabela:
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 Publisher
aula:
<?php
class Publisher
{
private $publisher_id;
private $name;
}
Linguagem de código: PHP ( php )
Para buscar cada linha da publishers
tabela e retorná-la como um Publisher
objeto, você usa o fetchObject()
método:
public function fetchObject(
string|null $class = "stdClass",
array $constructorArgs = []
): object|false
Linguagem de código: PHP ( php )
O fetchObject()
é um método da PDOStatement
classe. Ele busca a próxima linha do conjunto de resultados associado a um PDOStatement
objeto e retorna um objeto de uma classe. Se o fetchObject()
método falhar, ele retornará false
.
O fetchObject()
método possui dois parâmetros:
$class
especifica a classe do objeto a ser retornado. Se você omitir, ofetchObject()
método retornará uma instância dastdClass
classe.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 publishers
tabela e retornar um Publisher
objeto:
<?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 Publisher
classe com duas propriedades publisher_id
e name
:
class Publisher
{
private $publisher_id;
private $name;
}
Linguagem de código: PHP ( php )
Segundo, conecte-se ao bookdb
banco de dados usando o connect.php
objeto:
$pdo = require 'connect.php';
Linguagem de código: PHP ( php )
Terceiro, execute uma instrução preparada que selecione um editor com id 1 na publishers
tabela:
// 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 Publisher
objeto:
$publisher = $statement->fetchObject('Publisher');
Linguagem de código: PHP ( php )
Observe que se a Publisher
classe 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.