redéfinir dynamiquement une méthode de classe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : redéfinir dynamiquement une méthode de classe

Re: redéfinir dynamiquement une méthode de classe

par Yosh » 29 juin 2010, 14:14

Oui mais mon "noyau applicatif" va continuer d'appeler TheClass et pas TheClass2, non ?
A ba oui. Autant pour moi.

Re: redéfinir dynamiquement une méthode de classe

par stealth35 » 29 juin 2010, 11:47

en php 5.3 ça doit pouvoir se faire avec les fonctions anonymes

Re: redéfinir dynamiquement une méthode de classe

par abcbien » 29 juin 2010, 10:24

Oui mais mon "noyau applicatif" va continuer d'appeler TheClass et pas TheClass2, non ?

Re: redéfinir dynamiquement une méthode de classe

par Yosh » 29 juin 2010, 09:55

Je cherchais effectivement une solution "à la javascript". Je n'ai pas vraiment accès au code source dans le sens où je dois l'étendre (créer un plugin) mais je ne peux pas altérer le code source du noyau sous peine de devoir recommencer le patch lors du prochain upgrade.

Peut-être par un nouvel include peut-on remplacer du code déjà charger par le compilateur ?

Jeune PHPiste, j'espère que ma question n'est pas délirante.

En tout cas, merci. Je suis impressionné par votre réactivité.

Alain
Tu peux faire un include d'une class TheClass2 qui étend TheClass et tu surcharge ta méthode bonjour().

Re: redéfinir dynamiquement une méthode de classe

par abcbien » 29 juin 2010, 09:12

Je cherchais effectivement une solution "à la javascript". Je n'ai pas vraiment accès au code source dans le sens où je dois l'étendre (créer un plugin) mais je ne peux pas altérer le code source du noyau sous peine de devoir recommencer le patch lors du prochain upgrade.

Peut-être par un nouvel include peut-on remplacer du code déjà charger par le compilateur ?

Jeune PHPiste, j'espère que ma question n'est pas délirante.

En tout cas, merci. Je suis impressionné par votre réactivité.

Alain

Re: redéfinir dynamiquement une méthode de classe

par Nours312 » 29 juin 2010, 00:22

je crois qu'il cherche un equivalent à javascript (entre autre) dont les "methodes" (ou éléments) de l'objet 'TheClass' pourrait etre modifiés dynamiquement !... du style

Code : Tout sélectionner

TheClass.bonjour = function(){return "AuRevoir";}
à ma connaissance, c'est impossible, ce sont des classes et non des objet dynamiques ... mais je peux me tromper ^^

Edit :: par contre tu peux tout a fait envisager un truc du style :
class TheClass
{
  public $meth = array("bonjour", "bye");

  function bonjour() {
    echo "bonjour\n";
  }
  function bye() {
    echo "au revoir\n";
  }
};
$i = 0;
$inst = new TheClass();

$inst->{TheClass->meth[$i]}();

$i = 1 ;
$inst->{TheClass->meth[$i]}();
@++

Re: redéfinir dynamiquement une méthode de classe

par AB » 28 juin 2010, 19:41

Oui effectivement comme dit stealth35 ... Si un code ne fait pas ce que tu veux et que tu ne veux rien modifier... :lol:

Ou alors il faudrait nous dire ce que tu entends par "rien modifier" :wink:

Re: redéfinir dynamiquement une méthode de classe

par stealth35 » 28 juin 2010, 12:23

sans rien modifié tu peux pas

redéfinir dynamiquement une méthode de classe

par abcbien » 28 juin 2010, 12:19

Bonjour,

est-il possible de redéfinir dynamiquement une méthode de classe?

Exemple:
class TheClass
{
function bonjour() {
echo "bonjour\n";
}
};

Sans modifier le code source de TheClass, comment faire en sorte qu'à partir de maintenant, l'appel de la méthode bonjour de toute (nouvelle) instance de TheClass (et PAS d'une sous-classe de TheClass) réponde "au revoir" ?

D'avance, merci pour votre aide,

Alain