Autor | Zpráva | ||
---|---|---|---|
tester Profil * |
Metoda isError má vrátit true jestliže status je -1 tak říkám že nastala chyba. Pokud hodnota je jakékoliv jiné číslo nebo text, 0, null aj. tak má být false protože je tam uložený výsledek sql požadavku.
class CacheQuery { var $status; public function isError() { return $this->status==-1?true:false; } } Ještě jednou obsah metody s ladícími informacemi: $varbool = $this->status==-2?true:false; echo var_dump($varbool); echo "<h4>STATUS:".($this->status==-2?true:false)." alias: (".$this->status."==-1?true:false.)</h4>"; return $this->status==-1?true:false; } Co mi to píše: bool(false) STATUS: alias: (0==-1?true:false.) bool(false) STATUS: alias: (0==-1?true:false.) bool(true) STATUS:1 alias: (1==-1?true:false.) bool(true) STATUS:1 alias: (1==-1?true:false.) V prvních dvou vrací správně false že není chyba, ale v dalších dvou, kdy nejde o chybu vrací true. Jsem z toho zmatený a nechápu. Dokážete pomoct? oprava - nevím kde se tam vzalo -2 asi překlep. Správně: public function isError() { $varbool = $this->status==-1?true:false; echo var_dump($varbool); echo "<h4>STATUS:".($this->status==-1?true:false)." alias: (".$this->status."==-1?true:false.)</h4>"; return $this->status==-1?true:false; } Už jsem to našel: public function isError() { $varbool = $this->status===-1?true:false; echo var_dump($varbool); echo "<h4>STATUS:".($this->status===-1?true:false)." alias: (".$this->status."===-1?true:false.)</h4>"; return $this->status===-1?true:false; } Nalevo se objevilo false a nepravo od == bylo -1 což se přeložilo jako false == true ... Takže -1 je binárně jako true, typově tam musí být buď === false nebo v mém případě nutno dát typové porovnávací znaménko === |
||
Joker Profil |
#2 · Zasláno: 9. 3. 2016, 12:46:43
tester:
Čili vysvětlení je očekávané, že v té porovnávané proměnné ($this->status) je něco jiného, než si myslíte, že tam je. Jinak doporučuji si osvojit nějaký běžný standard psaní kódu, tohle je hrozně nečitelné. A výraz: return ($this->status === -1) ? true : false; return ($this->status === -1); |
||
Časová prodleva: 9 let
|
0