Maison >base de données >tutoriel mysql >Comment instancier dynamiquement des objets PHP en fonction des types de bases de données ?

Comment instancier dynamiquement des objets PHP en fonction des types de bases de données ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-24 15:19:11711parcourir

How to Dynamically Instantiate PHP Objects Based on Database Types?

Instancier dynamiquement des objets PHP à partir de types de bases de données

En PHP, il est possible de créer dynamiquement un objet basé sur une chaîne spécifiant un type défini dans une table de base de données. Pour y parvenir, on peut utiliser la requête de base de données et les capacités de création d'objets dynamiques de PHP.

Considérons une table de base de données avec les colonnes et exemples de données suivants :

id | type | propertyVal
----+------+-------------
1 | foo  | lorum
2 | bar  | ipsum

Supposons que nous ayons des types de données PHP. défini comme suit :

class ParentClass {...}
class Foo extends ParentClass {private $id, $propertyVal; ...}
class Bar extends ParentClass {private $id, $propertyVal; ...} 
// ...(more classes)...

Pour créer un objet d'un type défini par la colonne type de la base de données, nous pouvons exploiter les éléments suivants étapes :

  • Exécutez une requête qui sélectionne une ligne avec l'identifiant souhaité.
  • Utilisez mysql_fetch_object() pour récupérer les données sous forme de tableau associatif.
  • Obtenez le tapez la valeur du tableau associatif.
  • Créez dynamiquement un objet de ce type en utilisant la syntaxe : $instance = new $type;.
  • Attribuez les propriétés restantes de l'objet à partir du tableau associatif.

Par exemple :

$result = mysqli_query($conn, "SELECT * FROM table WHERE id = 1");
$row = mysqli_fetch_assoc($result);

$type = $row['type'];
$instance = new $type;

unset($row['type']);  
foreach ($row as $property => $value) {
   $instance->$property = $value;
}

De cette manière, l'objet instance sera créé dynamiquement avec le type spécifié par la colonne de base de données de type et ses propriétés se verront attribuer les valeurs de la ligne sélectionnée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn