Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [klasa] timer
flashdev
post
Post #1





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Witam,
Na własne potrzeby napisałem poniższą klasę.
Możecie oceniać, krytykować, używać w swoich projektach ile sie da smile.gif
To moja pierwsza klasa więc proszę o wyrozumiałość.

  1. <?php
  2. abstract class class_timer {
  3.    private static $data = array();
  4.  
  5.    public static function addTimer($name){
  6.        if( isset(self::$data[$name]) ){
  7.            return false;                //    taka nazwa juz istnieje
  8.        }else{
  9.            self::$data[$name] = array('stoped' => false, 'time' => self::getTime() );
  10.            return true;                //    timer zostal dodany
  11.        }
  12.    }
  13.    
  14.    public static function stopTimer($name){
  15.        if( isset(self::$data[$name]) ){
  16.            self::$data[$name] = array('stoped' => true, 'time' => self::getTime() - self::$data[$name]['time'] );
  17.            return true;                //    timer zostal prawidlowo zatrzymany
  18.        }else{
  19.            return false;                //    podany timer nie istnieje
  20.        }
  21.    }
  22.    
  23.    //    $format = 0 -> return = array
  24.    //    $format = 1 -> return = string formatted
  25.    public static function getTimers($format = false){
  26.        $arr = array();
  27.        foreach (self::$data as $key => &$value) {
  28.            if( !$value['stoped'] ){
  29.                self::stopTimer($key);
  30.            }
  31.            $arr[$key] = $value['time'];
  32.        }
  33.        if( $format ){
  34.            $res = "<!-- timers:\n";
  35.            foreach (self::$data as $key => &$value) {
  36.                $res .= $key . "\t-\t" . $value['time'] . "\n";
  37.            }
  38.            $res .= "-->\n";
  39.            return $res;
  40.        }
  41.        return $arr;
  42.    }
  43.  
  44.    private static function getTime(){
  45.        $t = explode(" ", microtime());
  46.        return (float)$t[1] + (float)$t[0];
  47.    }
  48. }
  49. ?>


mały opis:
Klasa służy do pomiarów czasów różnych wydarzeń na stronie.
addTimer
- dodaje timer o nazwie podanej w parametrze oraz zwraca true
- jesli taki timer istnieje - zwraca false
stopTimer
- zatrzymuje timer podany w parametrze oraz zwraca true
- jesli timer nie istnieje - zwraca false
getTimers
- zatrzymuje wszystkie timery oraz zwraca wartosc zalezna od podanego parametru
- dla true zwraca wartosci timerow w formacie string + komentarze html
- dla false (domyslnie) zwraca tabele w formacie tablica[nazwa_timera] = float(wartosc_timera)

Ten post edytował flashdev 6.07.2009, 01:03:33


--------------------
Go to the top of the page
+Quote Post
Pr0100
post
Post #2





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

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


czemu $data jest statyczna?

Ten post edytował Pr0100 5.07.2009, 23:45:46


--------------------
Go to the top of the page
+Quote Post
flashdev
post
Post #3





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(Pr0100 @ 6.07.2009, 00:45:03 ) *
czemu $data jest statyczna?


Korzystam z tego w taki sposób i mi wszystko działa prawidłowo.

  1. <?php
  2. include("class_timer.php");
  3. class_timer::addTimer('main');
  4. //...
  5. class_timer::stopTimer('main');
  6. echo class_timer::getTimers(true);
  7. ?>


Być może nie rozumiem jeszcze dokłądnie jak tworzyć statyczne klasy. Nie wiem czy nie ma jakiegoś błędu, wiec proszę o uwagi to i może czegoś sie nauczę.
Moim zdaniem użycie tutaj statcznyej klasy jest jak najbardziej na miejscu.


--------------------
Go to the top of the page
+Quote Post
Pr0100
post
Post #4





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

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


Cytat
Być może nie rozumiem jeszcze dokłądnie jak tworzyć statyczne klasy. Nie wiem czy nie ma jakiegoś błędu, wiec proszę o uwagi to i może czegoś sie nauczę.
Moim zdaniem użycie tutaj statcznyej klasy jest jak najbardziej na miejscu.


yyy nie ma klasy statycznej,

klasa abstrakcyjna
metoda statyczna

zresztą nich Ci to wytłumaczy ktoś bardziej kompetentny ... smile.gif

  1. <?php
  2. abstract class class_timer
  3. ?>

  1. <?php
  2. public static function addTimer //wszystkie metody
  3. ?>

  1. <?php
  2. self::$data //zamiast class_timer::$data
  3. ?>


Ten post edytował Pr0100 6.07.2009, 00:10:15


--------------------
Go to the top of the page
+Quote Post
flashdev
post
Post #5





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Poprawiłem i dalej działa.
We flashu (as3) to by nie przeszła taka dowolność kodu jak w php.


--------------------
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 Aktualny czas: 20.08.2025 - 11:19