Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcja (preg_replace_callback) w klasie, jak wywołać 2 parametr wewnątrz klasy?
rafalp
post 7.07.2008, 15:23:02
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Pisze sobie klasę zamiany tekstu na BB code w w której mam metodę "Message":

  1. <?php
  2. class Walidacja {
  3.  
  4. ...
  5.  
  6. function bbcode_autolink($str)
  7. {
  8. ...
  9. }
  10.  
  11. function Message($str)
  12. {
  13. $str = preg_replace_callback("#([\n ])([a-z]+?)://([a-z0-9-.,?!%*_#:;~&$@/=+]+)#si", "bbcode_autolink", $str);
  14. retun $str;
  15. }
  16.  
  17. ...
  18.  
  19. }
  20. ?>


Problem mam z parametrem "bbcode_autolink" w funkcji "Message" który powinien być poprawym wywołaniem funkcji w tej klasie.
Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'bbcode_autolink', to be a valid callback

"\$this->bbcode_autolink" też nie działa.
Jak można poprawie wywołać ta funkcję wewnątrz klasy tak żeby nazwę tej funkcji też można było umieścić wewnątrz tej samej klasy?

Ten post edytował rafalp 7.07.2008, 15:59:23


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
DawPi
post 7.07.2008, 15:28:57
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 1
Dołączył: 6.05.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function Message($str)
  3. {
  4. $str = preg_replace_callback("#([\n ])([a-z]+?)://([a-z0-9-.,?!%*_#:;~&$@/=+]+)#si", $this->bbcode_autolink($str), $str);
  5. return $str;
  6. }
  7. ?>


Też nie działa ? smile.gif


--------------------
intermedia - profesjonalne rozwiązania Invision Power Board
Go to the top of the page
+Quote Post
rafalp
post 7.07.2008, 16:48:21
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Cytat(DawPi @ 7.07.2008, 16:28:57 ) *
Też nie działa ? smile.gif


Nie :/

Edit:

Znalazłem sam rozwiązanie:

  1. <?php
  2. $str = preg_replace_callback("#([\n ])([a-z]+?)://([a-z0-9-.,?!%*_#:;~&$@/=+]+)#si", Array($this, "bbcode_autolink"), $str);
  3. ?>


Może ktoś wytłumaczyć jak to się dzieje że stosujemy w tym przypadku" Array " prawie jak funkcję i wszystko działa?

Ten post edytował rafalp 7.07.2008, 16:48:39


--------------------
Go to the top of the page
+Quote Post
bim2
post 7.07.2008, 18:38:54
Post #4





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Nie rozumiem "prawie jak funkcje"? Jakoś musiałeś przekazać instancję klasy oraz nazwe metody :] Skąd niby program miałby wiedzieć jaki obiekt utworzyć i z jakimi parametrami? smile.gif


--------------------
Go to the top of the page
+Quote Post
wrzasq
post 7.07.2008, 22:14:14
Post #5





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


poczytajcie manuala na przyszlosc, bo to w dziale podstawowych konstrukcji jest opisane. nie chce mi sie teraz szukac linka. prawidlowym odwolaniem do funkcji jest:

* nazwa funkcji.
* pelna nazwa metody statycznej.
* tablica dwuelementowa z nazwa klasy i nazwa metody statycznej.
* tablica dwuelementowa z instancja klasi i nazwa metody.
* funkcja stworzona przez wywolanie create_function().

to tak tylko w ramach wykladu, problem jak widac sam sie rozwiazal tongue.gif.

-edit-

o, tutaj jest: http://www.php.net/manual/en/language.pseudo-types.php

Ten post edytował wrzasq 7.07.2008, 22:14:30


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:10