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: 11 let
|
0