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
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;
je to samé, jako
return ($this->status === -1);

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: