Page 1 sur 1
Forcer la visibilité d'une méthode à "protected"
Posté : 22 févr. 2014, 19:12
par albertine
Bonjour,
Je cherche à forcer la visibilité d'une méthode de classe fille à être protected, j'utilise pour cela une classe parente abstraite mais le problème c'est que la classe fille peut très bien implémenter cette méthode avec une visibilité "public" sans que cela lève une erreur :
Code : Tout sélectionner
class Parent
{
abstract protected maMethode();
}
class Fille extends Parent
{
public function maMethode()
{
}
}
D'après la doc PHP c'est le comportement normal puisque la visibilité de la méthode de la classe fille doit être équivalente ou supérieure (protected ou public).
Mais alors comment faire pour forcer une méthode de classe fille à être dans la visibilité voulue et uniquement celle-ci (ici protected) ?
Désolé l'explication n'est peut-être pas claire mais donc pour résumer je veux absolument que la méthode maMethode() de la class Fille soit protected et qu'une erreur soit levée si ce n'est pas le cas...
Merci
Re: Forcer la visibilité d'une méthode à "protected"
Posté : 22 févr. 2014, 21:08
par Aureusms
Tu peux pas la forcer directement dans le code ?
Re: Forcer la visibilité d'une méthode à "protected"
Posté : 22 févr. 2014, 21:22
par albertine
Euh c'est à dire ? Un bout de code pour illustrer ?
Re: Forcer la visibilité d'une méthode à "protected"
Posté : 22 févr. 2014, 21:43
par Aureusms
class Fille extends Parent
{
protected function maMethode()
{
}
}
Re: Forcer la visibilité d'une méthode à "protected"
Posté : 22 févr. 2014, 21:47
par albertine
Ah d'accord, sisi mais ce que je cherche à faire c'est à forcer quelqu'un d'autre que moi à l'écrire comme ça. Si par exemple il hérite la classe parent mais oublie le protected sur la méthode il faudrait que ça lève une erreur... Là ce n'est pas le cas
(C'est pour un système de "plugins", c'est pour ça que quelqu'un qui n'a pas conçu le code au départ risque de faire l'erreur.)
Re: Forcer la visibilité d'une méthode à "protected"
Posté : 22 févr. 2014, 23:00
par moogli
ce n'est pas possible.
un plugin c'est pattern
Stratégie (
exemple en php).
Dans ce cas tu n'a pas de raison de forcer la visibilité d'une méthode (ou même d'autre chose en faite).
D'ailleurs tu n'as pas d’intérêt à forcer à connaitre le code d'un autre, c'est même un principe du développement : limiter l'adhérence entre les objets.
Avec le motif Stratégie tous ce qui t'intéresse c'est que la classe plugins implémente ton interface le reste c'est pas ton problème vu que tu ne va agir que sur les méthodes que tu connais.
tu peux aussi regarder le motif
factory (plus évolué que l'exemple) pour la gestion des plugins.
il y a surement moyen d'y caser une chaine de responsabilité a voir
@+
@+
Re: Forcer la visibilité d'une méthode à "protected"
Posté : 22 févr. 2014, 23:24
par albertine
Ah d'accord, merci pour les explications. Les patterns c'est vrai, encore un truc à apprendre, mais c'est beaucoup moins fun et gratifiant que d'y arriver par la seule force du raisonnement

Re: Forcer la visibilité d'une méthode à "protected"
Posté : 23 févr. 2014, 15:47
par moogli
les motifs de conception ne sont pas du pré mâché.
Ce sont des méthodes de conception, des démarches ou principe que l'on peu suivre afin d'avoir un code organisé et robuste.
on peu le faire sans cela, mais c'est une aide appréciable et éprouvée
d'ailleurs en t'indiquant cela je pense que tu as une idée pour faire ce que tu voulais ?
@+
Re: Forcer la visibilité d'une méthode à "protected"
Posté : 23 févr. 2014, 19:59
par albertine
d'ailleurs en t'indiquant cela je pense que tu as une idée pour faire ce que tu voulais ?
Bah disons que du coup je vais me confiner à suivre ce modèle de conception, parce que c'est vrai qu'une fois assimilé le système de plugins en découle tout seul...
Et du coup si je pense que (du moins dans mon cas) la majeure partie ou du moins la plus compliquée : la conception de l'architecture du système, est pré-machée. Et ça me laisse un petit arrière goût de frustration

Ceci dit c'est sûr que pour des applications beaucoup plus complexes, cette remarque est nulle et non avenue !
Mais bon dans tout les cas merci pour votre aide, et votre célérité ! =D>
Re: [RESOLU] Forcer la visibilité d'une méthode à "protected
Posté : 24 févr. 2014, 08:24
par moogli
De rien
