Jeśli dostanę zmienną i nie wiem, jest ona ustawiona czy nie mogę napisaćPHP praktyki kodowania
if (isset($a) && $a > 2)
czy mogę napisać
if (@ $a > 2)
który jest krótszy. Czy druga składnia jest dobra, czy nie?
Jeśli dostanę zmienną i nie wiem, jest ona ustawiona czy nie mogę napisaćPHP praktyki kodowania
if (isset($a) && $a > 2)
czy mogę napisać
if (@ $a > 2)
który jest krótszy. Czy druga składnia jest dobra, czy nie?
I totally sympathize, ale tłumienie błędu przy użyciu @
jest złą praktyką.
Błąd nadal występuje, po prostu zostaje wyłączony. Kosztuje to mikroskopijne ilości czasu, które jednak mogą się znacznie skumulować, jeśli zostaną wykonane w pętlach.
Ponadto, odbierasz możliwość używania "nieokreślonej zmiennej" na swoją korzyść: Jako mechanizm unikania literówek.
Wyrażenie if(@$a)
nie sprawdza, czy zmienna jest ustawiona, czy nie. Symbol @ po prostu przerasta wszelkie ostrzeżenia, które są złym stylem kodowania.
Funkcja isset sprawdza, czy zmienna istnieje i czy nie jest pusta. Nie jestem do końca pewien, co chcesz osiągnąć dzięki & & $ a.
Operator @ wyłącza komunikaty o błędach wygenerowane przez wyrażenie, do którego zostało wcześniej dodane.
Pierwszym podejściem jest właściwe podejście. Drugie podejście jest bardzo złe. skończysz z tłumieniem błędów i nawet nie wiesz. i pewnego dnia pojawią się błędy, że nie będziesz w stanie debugować tej złej praktyki.
Jak już powiedziano, pierwszy wariant to droga. Właściwie nie podoba mi się wariant (/ * */& & $ var), aby sprawdzić, czy zmienna jest pusta. Wolę za pomocą
if (isset($var) && !empty($var)) {
/* foo */
}
czy tylko
if (!empty($var)) {
/* foo */
}
Jednak jeśli $ var jest" 0 ", to nie jest" puste ", ale nadal zwraca wartość true z' empty() '. Ta BĘDZIE ugryzie cię w zadzie w pewnym momencie. –
Właściwie nie, ponieważ ja to wiem ...:-) Możesz dodać, że isset() pomija zmienną, jeśli jest ustawiona na NULL. Tak więc często musisz wykonać kontrole takie jak: 'if ((isset ($ x) && empty ($ x)) || is_null ($ x)) {/ * set Parametr procedury składowanej do String" NULL "* /}' Ale na pewno: Jeśli szukasz cyfry zero, to nie użyjesz pustego()! –
jeśli $ a jest ustawiony i nie fałszywe lub zerowa – Andrew
@Andrew to, co myślałem, ale to wydaje się zbyt ogólnie wszelkich warunkowe. Prawdopodobnie lepiej użyć po prostu! = False lub jeśli jest to liczba> 0 lub jeśli jego ciąg sprawdza jego długość> 0 lub coś podobnego. – Chris
w zależności od tego, co chcesz zezwolić na $ a, może być tym, czego szukasz, (http://de2.php.net/manual/en/function.empty.php). – Gordon