Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zliczanie wystąpień wywołania metody w kodzie..., z jednoczesnym zwracaniem wyniku zależnym od ilości tych wystąpień.
kreatiff
post
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


  1. <p>Tutaj? <?php echo $a->wstaw(); ?></p>
  2. <p>Może tutaj? <?php echo $a->wstaw(); ?></p>
  3. <p>Ewentualnie tutaj? <?php echo $a->wstaw(); ?></p>
  4. <p>Czy tu? <?php echo $a->wstaw(); ?></p>

Tylko w jednym z tych miejsc, gdzie znajduje się kod PHP ma się pojawić TAK. Losowo, przy odświeżeniu strony. Metoda wstaw() zwraca tylko raz "TAK" (inaczej zwraca pusty string), w zależności od tego, ile będzie miała możliwych miejsc do losowania.

Czy przed wykonaniem takiego kodu jest jakaś możliwość, by najpierw zliczyć w ilu miejscach metoda wstaw() będzie wywołana?
Bo problem jest taki, że nigdy nie znam ilości tych <?php echo $a->wstaw(); ?> w danym tekście bo jest ona zmienna, zależnie od tekstu. Tutaj występuje 4 razy, gdzieś indziej 1, albo 10.

Obejściem byłoby wstawienie tam jakiegoś unikalnego ciągu znaków i str_replace w buforze po zainicjowaniu ob_start. Ale to taka brzydka metoda i do tego nie chciałbym zmieniać treści tekstu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PrinceOfPersia
post
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


a jakbys dwa razy przechodził, najpierw testowo, pózniej naprawdę?

tekst.php:
  1. <p>Tutaj? <?php echo $a->wstaw(); ?></p>
  2. <p>Może tutaj? <?php echo $a->wstaw(); ?></p>
  3. <p>Ewentualnie tutaj? <?php echo $a->wstaw(); ?></p>
  4. <p>Czy tu? <?php echo $a->wstaw(); ?></p>
  5.  
  6. <p>Czy tu? <?php echo $a->wstaw(); ?></p>


główny plik:

  1. class DummyObject {
  2. public $counter = 0;
  3.  
  4. public function wstaw() {
  5. $this->counter++;
  6. }
  7. }
  8.  
  9. class RealObject {
  10. private $whenToShow;
  11. private $counter = 0;
  12. function __construct ($number) {
  13. $this->whenToShow = rand(1, $number);
  14. }
  15.  
  16. public function wstaw() {
  17. $this->counter++;
  18. return ($this->counter == $this->whenToShow)? 'TAK' : '';
  19. }
  20. }
  21.  
  22. $a = new DummyObject; // tworzymy udawany obiekt, ktory bedzie zliczal wystapienia
  23. require('tekst.php'); // "wyswietlamy", ale tylko w buforze
  24. ob_clean(); //czyscimy bufor
  25.  
  26. $a = new RealObject($a->counter); // tworzymy prawdziwy obiekt
  27. require('tekst.php');
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 21:32