![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 16.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Funkcja ma zwrócić wartość true, jeżeli z funkcją file_get_contents nie ma żadnych kłopotów i wartość false, jeżeli jest jakiś błąd. Nie jestem jeszcze zbyt obeznany w wyjątkach w PHP więc pomóżcie. -------------------- WIELKIE DZIĘKI ZA POMOC!
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Wyjątki nie zwracają wartości.
Jeśli wystąpi wyjątek, to w bloku catch() {} łapiesz wyjątek wyrzucony metodą throw() z bloku try {}. Czyli Twój kod powinien wyglądać tak:
-------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 16.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Funkcja ma zwracać wartość true, jeżeli można otworzyć stronę, a jeżeli nie to ma zwracać false.
Ta funkcja nie ma zwracać tego z file_get_contents tylko ma powiedzieć, czy można to coś pobrać. Jeżeli nie można tego zrobić przy użyciu wyjątków, to w jaki inny sposób można to zrobić? EDIT: Próbowałem po prostu zwrócić zamiast $pobrane to true i zamiast wyświetlać $e->getMessage() to zwrócić false, ale jeżeli file_get_contents nie działa jak należy, to i tak wypisuje błąd. Ten post edytował Capellini 31.01.2009, 16:16:11 -------------------- WIELKIE DZIĘKI ZA POMOC!
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ale użycie tego throw new Exception() samo w sobie sprawi, że w wymaganej sytuacji funkcja zwróci false. Właśnie po to istnieje taka konstrukcja - aplikacja przerywa w tym miejscu działanie (czyli jeśli po throw... dałeś return false, to się to return false nie wykona) i zwróci false.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 16.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ok.
Ale kod blooregard'a niestety nie działa bo (pomijając już małe błędy typu brak zakończenia nawiasu) wyrzuca mi błąd składni: unexpected T_RETURN, expecting T_CATCH więc czy ten catch nie powinien być zaraz po try? Zrobiłem tak, ale wtedy jest co prawda komunikat "Błąd. Nie udało sie pobrac czegos tam" i funkcja co prawda zwraca false, ale wypisuje także ten błąd, więc wygląda to tak: Cytat Warning: file_get_contents(): HTTP request failed! HTTP/1.0 403 Forbidden in E:\Moje\Najnowsze\funkcje.php on line 37 Warning: file_get_contents(http://www.pl.wikipedia.org/wiki/da): failed to open stream: No error in E:\Moje\Najnowsze\funkcje.php on line 37 Błąd. Nie udaĹ‚o sie pobrac czegos tam Ja chcę żeby po prostu, jak wystąpi jakiś błąd, funkcja tylko zwróciła false i żeby nie wypisywało Warning: file_get_con... chcę żeby po prostu nie traktowało tego jako błąd. Czy da się tak zrobić? Chodzi o to, że jak to zobaczy, że file_get_contents nie działa jak trzeba, to nie ma panikować, bo wszystko jest ok i ma tylko zwrócić false, a cały skrypt ma działać dalej. Ten post edytował Capellini 31.01.2009, 20:06:03 -------------------- WIELKIE DZIĘKI ZA POMOC!
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
No więc:
Kod <?php function wikipedia() { if(file_get_contents("http://www.pl.wikipedia.org/wiki/")) return true; else return false; } if(@wikipedia()) echo "ok"; else echo "nie ok"; ?> Wyjaśnienie: widzisz to wywołanie funkcji wikipedia w ifie poza funkcją? Ten znaczek - @ to wygłuszanie błędów, czyli jeśli strony nie znajdzie to tylko wypisze ten komunikat (nie ok u mnie ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 16.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Teraz działa, dokładnie o to chodziło. W dodatku bardzo proste rozwiązanie.
Ten post edytował Capellini 31.01.2009, 22:03:34 -------------------- WIELKIE DZIĘKI ZA POMOC!
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:25 |