Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Czy funkcja zostala wykonana?
Forum PHP.pl > Forum > PHP > Object-oriented programming
djhors
Mam takie pytanko:

Otoz potrzebuje sprawdzic w danym momencie (najlepiej po calkowitym zaladowaniu strony do przegladarki) czy dana funkcja czy to z klasy czy nie wczesniej include -wana zostala gdzies wczesniej wywolana poprzez zwykle mojafunkcja($zmienna);

Oczywiscie kazdy powie czemy nie uzyc sesji, cookie lub wystawic sprawdzic zmienne czy istnieja jesli zostala wywolana. Ale niestety nie moge tego zrobic (nie moge ingerowac w kod funkcji - Licencja) i sama funkcja nie oddaje zadnych zmiennych.

Czy istnieje jakas funckcja_specjalna sprawdzajaca to czy dana funckja byla wywolana czy nie?
carbolymer
Niestety nie. Ale jeżeli ta funkcja jest w klasie to możesz spróbować ją przesłonić w taki sposób:
  1. <?php
  2. class omgDoNotTouchAnythingInside
  3. {
  4. public function makeSkyBlue($arg)
  5. {
  6. //tu te ciało objęte licencją
  7. return $veryImportantVariable;
  8. }
  9. }
  10.  
  11. class simpleClass extends omgDoNotTouchAnythingInside
  12. {
  13. function makeSkyBlue($arg)
  14. {
  15. echo 'Niebo stało sie niebieskie.';
  16. return parent::makeSkyBlue($arg);
  17. }
  18.  
  19. }
  20. ?>

i w każdym miejscu w kodzie musisz zamienić: $obj = new omgDoNotTouchAnythingInside; na $obj = new simpleClass; I powinien sie przy każdym wywołaniu $obj->makeSkyBlue() pojawić napis (możesz to zmienić na cokolwiek).

Co do funkcji nie w klasie, to tylko debug_backtrace() przychodzi mi do głowy.
Sedziwoj
Zawsze można włączyć xdebuger i profilowanie, tam napisze ile razy była wywołana i gdzie, ale to jedynie jeśli chcesz sprawdzić to, jak ma być to dynamiczne to opakowanie lub też xdebuger debugowanie skryptu i breakpoint w kodzie kodzie funkcji aby wtedy będzie ile razy wywołana.
Ale szczerze jeśli to nie jest w klasie, to nie w tym miejscu co trzeba umieściłeś.
djhors
Hm, ciekawe pozniej to wszystko sprawdze. Pierwszy raz mam taka sytuacje wiec nie wiedzialem za co sie zlapac teraz mam przynajmniej kierunek. snitch.gif
bim2
Nie wystarczy zwykle:
  1. <?php 
  2. function PosredniaFunkcja($parametrs)
  3. { 
  4. if(RUN_ToCoChcemSprawdzic===true)
  5. {
  6.  define('RUN_ToCoChcemSprawdzic', true);
  7.  return ToCoChcemSprawdzic($parametrs);
  8. } else {
  9.  echo 'Funkcja raz juz byla wywolana';
  10. }
  11. }
  12. ?>

? :]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.