J'ai 2 classes A et B qui étendent A. A a une propriété publique et je veux que sur les instances de B cette propriété ne soit pas accessible. J'essaie d'expliquer mieux:PHP rend la propriété de classe héritable
class A
{
public $prop;
}
class B extends A
{
...
}
$instance=new B;
$instance->prop; //This must throw an error like "Undefined property prop"
J'ai essayé avec le mot-clé final
mais il est disponible uniquement pour les méthodes non pour les propriétés. J'ai essayé aussi en définissant la même propriété que private
sur B mais PHP ne permet pas de changer le niveau d'accès de public à privé ou protégé.
Peut-être y a-t-il une solution simple à ce problème mais je ne peux pas le trouver alors connaissez-vous un moyen de faire cela?
Êtes-vous étendant la classe de quelqu'un d'autre? Pourquoi ne pouvez-vous pas résoudre le problème à son origine? – erisco
Pourquoi voulez-vous déclarer une propriété publique (c'est-à-dire la plus grande visibilité possible), puis refuser son accès aux classes descendantes? –
Je ne veux pas rendre privée une propriété publique je veux que B n'en hérite pas. J'ai changé le niveau d'accès seulement pour trouver une bonne solution mais ça ne marche pas – mck89