une methode qui serait automatiquement appeler a chaque execution d une methode

cash
Invité n'ayant pas de compte PHPfrance

06 févr. 2008, 13:00

bonjour ,

alors voila je cherche une technique pour cree quelque chose qui pourait etre appeler , methode mere
je m' explique ...

j ai donc une class
dans cette class , il y a plein de methode "function"
et bien mon prob ce serait de cree un mechanisme qui permetrait qu a chaque execution d une de ces methodes et bien il soit automatiquement rattaché l execution d une methode particuliere

ceci dans le but de faire un fichier log

donc j aimerais avoir une classe mere dont toute mes autres classe derivent
et dans cette class mere un procces qui serait executé a chaque appel de function de n importe quel methode de n importe quel classe fille

y a quelqu un qui comprend ?

bon ben si quelqun voit ?

ViPHP
ViPHP | 2287 Messages

06 févr. 2008, 13:15

La réponse est dans le manuel php, plus exactement ici.

La méthode magique __call() permet justement de faire ça ;-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 505 Messages

06 févr. 2008, 14:15

La magique __call n'est appelée que lorsque on appelle une fonction non connue, donc, pour pouvoir faire ce que tu souhaites, il faudrait non pas dérivé une classe mère mais dériver la classe X vers une Xlog qui ferait office de wrapper et qui te permettrai d'intercepter tout appel a la class X avant de transferer l'appel

class toto {
  function f () {
    echo 'f';
  }
}

class totoLog {
  function __call($nom, $args) {
    echo 'before f()';
    call_user_func_array(array('parent',$nom), $args);
    echo 'after f()';
  }
}
Néanmoins, la solution la plus adapté pour faire ce que tu souhaites serait la programmation orienté aspect. Je sais qu'il y a eu plusieurs tentatives d'approche de la POA en php mais je n'avais rien vu de véritablement complet à l'époque ou je m'y était intérressé (il y a 2 ou 3 ans ). Peut être que depuis, les choses ont évoluées.

cash
Invité n'ayant pas de compte PHPfrance

11 févr. 2008, 19:07

bonjour

je vous remercie de votre reponce

Petit nouveau ! | 1 Messages

29 févr. 2008, 07:32

La POA (AOP) fait partie du cahier des charges du "nouveau" framework Flow3 et le logging est effectivement un exemple assez type de son utilisation.

Plus d'infos ici: http://flow3.typo3.org/documentation/re ... framework/

Mammouth du PHP | 505 Messages

29 févr. 2008, 09:48

Merci pour le lien.

A étudier asap donc :).