Autor | Zpráva | ||
---|---|---|---|
návštěvník Profil * |
#1 · Zasláno: 18. 4. 2014, 19:28:25
Můžete mi poradit jak opravit tento skript?
http://emp.wz.cz/htconfig/download.html Strict Standards: Non-static method Session::getId() should not be called statically... Spouštím to na serveru s php 5.0 respektive (PHP 5.4, 5.3 nebo 5.2 nevím co tam přesně běží) ale bylo to vytvořeno na 4.3.0 . Na localhostu s 5.2.1 mi to funguje. |
||
Kubo2 Profil |
#2 · Zasláno: 18. 4. 2014, 19:43:55
Text hlášky sa myslím vyjadruje celkom jasne. Navyše toto nie je chyba, iba poznámka k tomu, že skript by šiel napísať lepšie.
|
||
Joker Profil |
#3 · Zasláno: 18. 4. 2014, 19:49:21
návštěvník:
„Můžete mi poradit jak opravit tento skript?“ Jako že přehrabat se tou tunou neformátovaného PHP kódu? Ani ne. Ale to upozornění se týká toho, že pro nestatické metody (ty co nemají static ) se nemá používat operátor :: (s nádherným názvem „pámajim nekudotajim“), tj. místo přes Třída::metoda() se mají volat přes $instance->metoda().
„Na localhostu s 5.2.1 mi to funguje.“ Spíš tam jen jsou vypnutá chybová hlášení úrovně Strict. |
||
návštěvník Profil * |
#4 · Zasláno: 18. 4. 2014, 20:21:37
Joker:
Zkoušel jsem tam doplnit static před ty metody. Hlášky už to nehází ale taky to nejede na tom serveru (moxo). Tak nevím co dělám špatně. Asi je to těma vypnutýma hláškama na mém serveru že mi to na localhostu jede |
||
Alphard Profil |
#5 · Zasláno: 18. 4. 2014, 20:35:02
static nejde „jen tak“ doplnit, dané metody musí být psané tak, aby mohly fungovat staticky, tj. především musí další metody volat staticky a používat jen statické proměnné (nemělo by se v nich objevit $this ). Tím nehezkým kódem se prohrabávat nebudu, možná by ale bylo řešení vytvořit si instanci té třídy (new Trida ) a pracovat s ní.
|
||
návštěvník Profil * |
#6 · Zasláno: 18. 4. 2014, 20:52:21
Asi to vzdám. Je to šílené vyznat se v tom.
třída class Session obsahuje statický přístup k sobě samé: if(Session::__checkLockFile()) $this->logged=true; škoda že to nejede jinak by to byl užitečný skript |
||
SwimX Profil |
návštěvník
statický přístup k sobě samé není problém, to běžně používá, příklad: class Select { public static $options = array ( "A", "B" ); public function get ( $id ) { return Select::$options [ $id ]; } } Takže to co popisuješ problém být vůbec nemusí. Pokud ti vadí jen ta chybová hláška, tak si ji vypni :-) error_reporting(E_ALL ^ E_STRICT); error_reporting(0); Problémy to celkem příjemně odkládá, ale moc neřeší. |
||
návštěvník Profil * |
#8 · Zasláno: 18. 4. 2014, 21:11:44
SwimX:
Díky! Tys to konečně vyřešil! Supr. Už to jede |
||
SwimX Profil |
#9 · Zasláno: 18. 4. 2014, 21:13:33
návštěvník:
„vyřešil“ bych tomu neříkal :-) Jak jsem psal, problémy to příjemně odkládá, neřeší. |
||
Tori Profil |
#10 · Zasláno: 18. 4. 2014, 21:15:01
návštěvník:
„Zkoušel jsem tam doplnit static před ty metody.“ Asi jste to doplňoval jinam, je potřeba to dát jen na konec toho obludného řádku 260: {Session::__killSession();}static function getId(){return$_SESSION['id'];}
|
||
návštěvník Profil * |
#11 · Zasláno: 18. 4. 2014, 21:19:35
Tori:
Tobě to jelo? Já to zkoušel dát k mnoha metodám, ale nakonec to nejelo právě z toho důvodu, že u přihlašování se pracuje s ukládáním dat v instanci (this v metodě). Takže asi by tam měla být ta instance, ale proč se tím vůbec zabývat, když stačilo vypnout chybové hlášky... |
||
Tori Profil |
#12 · Zasláno: 18. 4. 2014, 21:26:00
návštěvník:
Nespouštěla jsem to, ale v kódu to vypadalo, že ta metoda je volaná jen dvakrát a v obou případech staticky, takže proto. |
||
Časová prodleva: 10 let
|
0