logo

Palette - Make it Colorful🎨

Palette - Visual Page Builder, no design degree required.

Live Demo Download Palette

Scorri
01/10/2025, by Ivan

Le query possono essere recuperate in oggetti basati su classi personalizzate. Ad esempio, se abbiamo una classe chiamata ExampleClass, la seguente query restituirà oggetti di tipo ExampleClass.

$result = $connection->query("SELECT id, title FROM {example_table}", [], [
  'fetch' => 'ExampleClass',
]);

Se la classe ha un metodo __construct(), gli oggetti verranno creati, le proprietà verranno aggiunte all’oggetto e poi verrà invocato il metodo __construct(). Ad esempio, se hai la seguente classe e query:

class ExampleClass {
  function __construct() {
    // Fare qualcosa
  }
}

$result = $connection->query("SELECT id, title FROM {example_table}", [], [
  'fetch' => 'ExampleClass',
]);

L’oggetto verrà creato, le proprietà id e title saranno aggiunte all’oggetto e poi verrà eseguito __construct(). L’ordine di questi eventi è legato a un bug in PHP per le versioni inferiori alla 5.2.

Se nella classe esiste un metodo __construct() che deve essere eseguito prima dell’aggiunta delle proprietà all’oggetto, il seguente esempio mostra come fare:

$result = $connection->query("SELECT id, title FROM {example_table}");
foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) {
  // Fare qualcosa
}

Gli argomenti passati a fetchAll possono essere usati nello stesso modo. PDO::FETCH_CLASS indica a fetchAll di prendere il set di risultati restituito e aggiungere i valori come proprietà a un oggetto di tipo ExampleClass (secondo argomento). PDO::FETCH_PROPS_LATE indica a fetchAll di aggiungere il set di risultati come proprietà dell’oggetto dopo l’esecuzione di __construct().