Autor Zpráva
oop
Profil *
zdravím,
chci se vás zeptat,jak vyřešit script na generování času načtené stránky..
problém mám ten,jak přiřadit hodnoty z data do time output...
děkuji
<?php
class other
{
  
    public static function Data()
    {
    $time = explode(" ", microtime()); 
    $time = $time[1] + $time[0]; 
    $rd = "100000";
  }
  
  public static function time_output()
  {
    $time2 = explode(" ", microtime());
    return ( round( ( ($time2[1] + $time2[0] ) - $this->Data($time) ) * $this->Data($rd)) ) / $this->Data($rd);
  }
}
xROAL
Profil
Prvá vec je, že metódy sú statické, a teda pri nich neexistuje žiadne $this.
$this označuje aktuálnu inštanciu triedy - objekt - a pracovať s ním dokážu len metódy ktoré sú inštančné - teda nie static.

K metóde Data() preto musíš v time_output() pristupovať staticky, a teda self::Data().

Druhá vec je, že premenné $time a $rd vytváraš v metóde Data() a teda mimo tejto metódy tieto konkrétne premenné neexistujú. Premenné by mali byť definované v samotnej triede (a nakoľko sú statické metódy, musia byť statické aj tieto premenné, inak by s nimi statické metódy nedokázali pracovať).

Celé by to teda mohlo vyzerať skôr takto:
<?php
class other{
  public static $time, $rd;

  public static function Data(){
    $time = explode(" ", microtime());
    self::$time = $time[1] + $time[0];
    self::$rd = "100000";
  }

  public static function time_output(){
    $time2 = explode(" ", microtime());
    return ( round( ( ($time2[1] + $time2[0] ) - self::$time ) * self::$rd) ) / self::$rd;
  }
}
?>
oop
Profil *
xROAL:
aha,chápu děkuju..
jen ještě se chci zeptat,bude problém někde ve scriptu v zaokrouhlování nejspíš..
vypisuje mě to 2.0E-5 je to zaokrouhlení dobře?
Alphard
Profil
oop:
vypisuje mě to 2.0E-5 je to zaokrouhlení dobře?
Vědecký zápis, desetinné číslo lze libovolně formátovat třeba pomocí number_format().
Jinak ta třída teda vypadá naprosto děsně, neznalost parametru microtime(), neznalost datových typů, dost svérázné konvence v pojmenovaní, navíc se mi tady nezdá šťastný statický přístup.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0