2009-08-05 7 views
0

J'ai un problème lors de la définition d'un attribut privé sur une classe PHP, ma méthode __set() est appelée cependant quand j'effectue cette opération sur un attribut qui est un tableau il effectue d'abord ma méthode __get() qui rend le ser inutilisable:/Echec d'un attribut privé qui est un tableau sur une classe PHP

$this->person['name'] = 'perro'; 

simplement, ne fonctionne pas, aucune idée à ce sujet?

+0

Pouvez-vous montrer la méthode __set()? – danieltalsky

+0

Pourriez-vous montrer un peu plus de code? Comme un petit test-case le reproduit le problème? Assurez-vous également que votre niveau error_reporting est correct pour que les erreurs E_NOTICE soient visibles (ceci peut vraiment vous aider sur celui-ci); et, enfin, êtes-vous sûr que la propriété "personne" existe dans votre classe? –

Répondre

3

Si votre attribut est privé, ne pas être en mesure de le voir (soit pour la lecture ni l'écriture) d'une sous-classe si parfaitement normal: private signifie que vous attribut est privé à la classe dans laquelle il est défini.

C'est la différence entre le privé et protégé:

  • privé = accessible uniquement pour une classe, il est déclaré dans
  • protégé = accessible de toute classe qui « est une » classe du type you'r déclarant (super ou sous-catégorie)
  • publique = accessible à partir de n'importe qui

Pour plus d'informations à ce sujet dans PHP, reportez-vous Visibilty dans le manuel.

Vous trouverez probablement plus d'informations sur le net à ce sujet, le cas échéant: il est l'une des bases de la programmation orientée objet, et il est vrai dans d'autres langues (comme C++, par exemple)
Rechercher des mots-clés comme "Visibility", "Encapsulation", ou "Information Hiding", par exemple - en relation avec OOP/Programmation orientée objet

0

résoudre, le problème est que je tentais de définir une variable privée au sein de ma classe et je ne comprends pas pourquoi si PHP Im ne me laisse pas toucher cet attribut

pour corriger ce problème que je viens changé mes attributs de privé à protéger

+1

C'est la définition d'une propriété privée. Seule la classe définissant l'attribut privé peut modifier/accéder à son contenu. Un attribut protégé permet aux classes enfants de le modifier/y accéder. Je viens de voir que Pascal MARTIN a bien expliqué cette différence. –

Questions connexes