Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1546 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Class et callback : probleme de fonction

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Class et callback : probleme de fonction

n°575781
karamilo
Posté le 25-11-2003 à 16:16:31  profilanswer
 

salut
j'ai cree une classe qui utilise un preg_replace_callback et qui appelle donc une fonction nommée 'fct'. Le probleme est que je n'arrive pas a integrer cette fonction dans la classe car le callback me refoule :
Warning: preg_replace_callback() requires argument 2, '$this->fct', to be a valid callback in /home/karamilo/public_html/Templates/tpl2.class.php on line 45
 
preg_replace_callback a bien l'argument entre '' et pas entre "".  
 
Etait il possible de faire un callback sur une fonction de la classe ? j'ai aussi essaye class::fonction et create_function mais ca ne fonctionne pas et la fonction est trop longue pour create_function :|
 
Le code est un morceau de la classe de templates.
 
 

Code :
  1. <?
  2. class Template
  3. {
  4. function replace($data) // remplace les donnees templates par du php
  5. {
  6. $data = strtr($data, array("'" => "\'" ));
  7. $search = array(
  8. "#(.*?)<(if|elseif|foreach) cond=\\\\'(.*?)\\\\'>(.*?)</(if|elseif|foreach)>(.*)#Ssi",
  9. "#(.*?)<else>(.*?)</else>(.*)#Ssi" );
  10. $data = preg_replace_callback($search,'fct', $data);
  11. $data = $this->repvar($data);
  12. $data = "<?\n".$this->set_session."include_once '".$this->dir['lang'].$this->set_lang."';\necho '\n".$data."\n';\n?>";
  13. return $data;
  14. }
  15. }
  16. function fct($texte)
  17. {
  18. if (isset($texte[4]))
  19. {
  20. $texte2 = $texte[1].'\';'.$texte[2].' ('.$texte[3].'){echo \''.$texte[4].'\';}echo \''.$texte[6];
  21.  if (strpos($texte2,'<'.$texte[2]." cond=\\'" ) < strpos($texte2,'</'.$texte[2].'>'))
  22.  {
  23.  $search = "#(.*?)<(if|elseif|foreach) cond=\\\\'(.*?)\\\\'>(.*?)</(if|elseif|foreach)>(.*)#Ssi";
  24.  return preg_replace_callback($search,'fct', $texte2);
  25.  }
  26.  else
  27.  {
  28.  return $texte2;
  29.  }
  30. }
  31. else
  32. {
  33. $texte2 = $texte[1].'\';else {echo \''.$texte[2].'\';}echo \''.$texte[3];
  34.  if (strpos($texte2,'<else>') < strpos($texte2,'</else>'))
  35.  {
  36.  $search = array(
  37.  "#(.*?)<(.*?) cond=\\\\'(.*?)\\\\'>(.*?)</(.*?)>(.*)#Ssi",
  38.  "#(.*?)<else>(.*?)</else>(.*)#Ssi" );
  39.  return preg_replace_callback($search,'fct', $texte2);
  40.  }
  41.  else
  42.  {
  43.  return $texte2;
  44.  }
  45. }
  46. }
  47. ?>


Message édité par karamilo le 25-11-2003 à 16:27:40
mood
Publicité
Posté le 25-11-2003 à 16:16:31  profilanswer
 

n°575790
gizmo
Posté le 25-11-2003 à 16:22:44  profilanswer
 

donne le code...

n°575811
karamilo
Posté le 25-11-2003 à 16:46:06  profilanswer
 

desole de pas l'avoir mis directement ;)
 
edit au dessus.

n°575867
karamilo
Posté le 25-11-2003 à 18:22:33  profilanswer
 

j'ai trouvé, il faut mettre :  
array('nomdelaclasse','nomdelafonction') au lieu de 'nomdelafonction' en argument callback.
preg_replace_callback($search, array('Template','fct'), $texte)
 
En php5, on pourra faire une sorte de $this :
preg_replace_callback($search, array('self', 'fct'), $texte)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Class et callback : probleme de fonction

 

Sujets relatifs
Problème de connexion entre SQL Server et une base mixte Access/SQL[XHTML] Problème de padding pour un menu dans une frame [IE bug!]
Problème unscript d'upload de fichierprobleme avec une requete de type update en ASP
hmmm les class et option pas compatible?[Assembleur] Problème de $ en assembleur
Petit Probleme sur les Exceptions[HTML] Problème de police
défi de la semaine : fonction retournant la taille d'un tableau(PHP] Problème sous PHPBB (v. Nuked Klan 2.0.4)
Plus de sujets relatifs à : Class et callback : probleme de fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR