Piszę aplikację php, aby uzyskać dostęp do bazy danych MySQL, a w samouczku mówi coś o formularzu
mysql_connect($host, $user, $pass) or die("could not connect");
Skąd PHP wie, że funkcja zawiodła, tak że uruchamia część matrycy? Myślę, że pytam, jak działa ta część „lub”. Chyba nie widziałem tego wcześniej.
php
mysql
exception-handling
conditional
chustar
źródło
źródło
Odpowiedzi:
Jeśli pierwsza instrukcja zwróci
true
, to cała instrukcja musi być,true
dlatego druga część nigdy nie zostanie wykonana.Na przykład:
Dlatego, jeśli zapytanie nie powiedzie się, oceni
die()
instrukcję i zakończy skrypt.źródło
with
instrukcja Pythona , podczas gdy w rzeczywistości jest to tylko wyrażenie boolowskie ... Myślę, że należy zachować szczególną ostrożność podczas używania tego wyrażenia, jeśli oczekuje się, że wykonasz czyszczenie w przypadku błędy. Proszę, popraw mnie, jeśli się mylę, ale jeśli to zrobiszfunc_call($file) or die();
i funkcja nie powiedzie się, plik zostanie otwarty, gdy skrypty umrą.or
w sytuacjach, w którychif
może zadziałać?PHP
or
działa jak C||
(które, nawiasem mówiąc, jest również obsługiwane przez PHP -or
po prostu wygląda ładniej i ma inny priorytet operatorów - zobacz tę stronę ).Jest znany jako operator zwarcia , ponieważ pominie wszelkie oceny, gdy będzie miał wystarczającą ilość informacji, aby zdecydować o ostatecznej wartości.
W twoim przykładzie, jeśli
mysql_connect()
zwraca TRUE, to PHP już wie, że cała instrukcja zostanie oceniona na TRUE, bez względu na to,die()
do czego się zmienia, i dlategodie()
nie jest oceniana.Jeśli
mysql_connect()
zwraca FALSE, PHP nie wie, czy cała instrukcja oceni jako TRUE czy FALSE, więc kontynuuje i próbuje oszacowaćdie()
- kończąc skrypt w procesie.To po prostu fajna sztuczka, która wykorzystuje sposób, w jaki
or
działa.źródło
Działa tak, jak opisali inni.
W PHP nie używaj „die”, ponieważ NIE zgłasza wyjątku (tak jak w Perlu). Zamiast tego wyrzuć wyjątek poprawnie w normalny sposób.
die nie może zostać przechwycony w PHP i nie rejestruje - zamiast tego drukuje wiadomość bez wdzięczności i natychmiast zamyka skrypt, nie mówiąc nikomu nic ani nie dając Ci możliwości zarejestrowania zdarzenia, ponownej próby itp.
źródło
źródło