2010-07-19 3 views
0

comme ceci: if ($ sth) make_private ($ this-> méthode); Ou peut-être y a-t-il un autre moyen d'affecter l'accessibilité des méthodes?est-il possible de changer la propriété de la méthode de publique à privée et de retour à l'exécution à l'intérieur de la classe?

Le problème est que j'ai écrit une classe où les méthodes doivent être appelées une fois, j'ai donc besoin de code pour restreindre l'accès à la méthode donnée depuis l'extérieur de la classe après l'exécution de cette méthode.

Répondre

0

Une façon simple de le faire dans le mothod (limite à un appel):

public function fooBar() { 
    static $called; 
    if (isset($called)) throw new Exception('Called already once!'); 
    $called = true; 

    // your code 
} 
5

Vous avez plusieurs meilleures options:

  1. la poignée « ne peut être appelée une fois » avec une variable d'état statique dans la classe elle-même, et lancer des exceptions lisibles.
  2. Gérez le 'ne peut être appelé qu'une fois' avec un objet décorateur si vous ne pouvez pas modifier la classe/l'objet lui-même.

La façon très indésirable que vous suggérez est possible, voir classkit_method_redefine ou runkit_method_redefine, mais au nom de tous ceux qui travaillent peut-être sur votre code à l'avenir: s'il vous plaît ne pas l'utiliser.

Questions connexes