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
Pouvez-vous montrer la méthode __set()? – danieltalsky
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? –