2016-07-06 1 views
0

Désolé, la question était trop mauvais pour avoir une bonne réponse, alors maintenant j'edited:classe AOP étend quérir classe en PHP


Le manuel dit:

PDO :: FETCH_CLASS: retour instances de la classe spécifiée, mappant les colonnes de chaque ligne aux propriétés nommées de la classe. Mon doute est que si la classe s'étend d'une autre classe qui a plus d'attributs, sera ce atributs instancié? Désolé si je ne suis pas clair avec la question, je ne suis pas anglophone. Merci à tous.

+0

Où est $ résultat défini? ;-) –

+1

le code n'a aucun sens. vous ne vous connectez pas à la base de données, vos classes n'ont pas de méthodes, '$ result' n'est jamais défini, vous utilisez '$ this' à l'extérieur d'un objet, bla bla bla. et à moins que vous ne le fassiez tous ailleurs, vous supposez simplement que la requête réussira toujours. –

+2

À l'exception des déclarations de propriétés, tout le code d'une classe doit être en fonctions. Vous ne pouvez pas avoir des déclarations comme ça. – Barmar

Répondre

1

Une bonne question.

Pour PDO, une hiérarchie de classes n'a pas vraiment d'importance. Ce que fait PDO consiste simplement à prendre des colonnes de la base de données et à les affecter aux propriétés de la classe, , indépendamment de la définition de la classe ou de l'héritage.

  • Si une propriété n'existe pas, PDO va essayer de le créer.
  • S'il existe une propriété pour laquelle il n'y a pas de colonne à mapper, alors PDO le laissera seul.

Aussi simple que cela. Ainsi, il devrait créer tout ce que vous sélectionnez dans la base de données.

En raison du code particulier que vous aviez dans votre question précédente - vous devez le déboguer. Regardez, pour voir si quelque chose a été récupéré, vous utilisez la méthode printNickName(). Mais il pourrait y avoir n'importe quelle erreur avec cette méthode ou n'importe quel processus intermédiaire. Laissez-moi vous suggérer de créer simplement des classes vides, d'y récupérer vos données et de vérifier directement les propriétés. Une fois que vous avez vérifié que toutes les propriétés sont correctement définies, vous pouvez essayer avec vos définitions de classes personnalisées. Pour déboguer les données renvoyées, je vous suggère d'utiliser

$stmt->execute(); 
var_dump($stmt->fetchAll(PDO::FETCH_CLASS, 'User')); 

Vous pouvez apprendre d'autres détails de la gestion de classe AOP de mon article, Fetching objects with PDO

+0

Merci pour la réponse!Mais quand je fais ce que je reçois ceci: Tableau ( [0] => User Object ( [idUser: Utilisateur: privé] => 1 [Nom: Personnes: private] => [nom: Personnes : privé] => [idPeople: Personnes: privé] => [nom] => Alexandro [nom] => Cruz [idPeople] => 5 ) ) – facumontero

+0

@facumontero Je pense qu'il est quelque chose avec votre question. Pouvez-vous le vérifier avec 'var_dump ($ stmt-> fetchAll (PDO :: FETCH_ASSOC));'? –