| Autor | Zpráva | ||
|---|---|---|---|
| oop Profil * |
#1 · Zasláno: 10. 5. 2014, 00:11:19
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 |
#2 · Zasláno: 10. 5. 2014, 02:03:39
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 * |
#3 · Zasláno: 10. 5. 2014, 12:27:00
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 |
#4 · Zasláno: 10. 5. 2014, 12:51:11
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. |
||
|
Časová prodleva: 12 let
|
|||
0