Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Instrukcja if i dziwny problem
Forum PHP.pl > Forum > PHP
PawelC
Witam,
Zastanawia mnie jedna rzecz, mam taki oto kod:
  1. #Update URL
  2. public function update($url, $id)
  3. {
  4. $result=$this->db->prepare("UPDATE url SET adres=:url where id=:id limit 1");
  5. $result->bindParam(':url',$url, PDO::PARAM_STR);
  6. $result->bindParam(':id',$id,PDO::PARAM_INT);
  7. if(!$result->execute()){
  8. throw new Exception('Adres nie został zaktualizowany!');
  9. }
  10. }

Idąc na logikę jeżeli wrzucę to w instrukcję if czyli
  1. if($http->update($url, $id))
  2. {
  3. echo "Ok";
  4. }else{
  5. echo "Error";
  6. }

Po wykonaniu i poprawnej aktualizacji powinno mi pokazać OK, ale mimo to pokazuje Error i oczywiście aktualizuje dany rekord. Nie wiem czy ja coś pomieszałem, czy czegoś tu nie rozumiem.
viking
Na logikę to metoda powinna coś zwrócić i ewentualnie rzucić wyjątkiem. Update nic nie zwraca.
PawelC
Boże faktycznie biggrin.gif po poprawnym powinna zwrócić np return true, lub wyjątek w razie błędu...
nospor
Jesli faktycznie nadal chcesz rzucac w funkcji tym wyjatkiem, to caly twoj blok IF ELSE nie ma najmniejszego sensu. Rownie dobrze mozesz zrobic tak

  1. $http->update($url, $id);
  2. echo "Ok";

Wynik bedzie dokladnie taki sam
PawelC
@nospor do takiego samego wniosku doszedłem, ale to, że nic nie zwracałem rozwiązało moje problemy. Nie wiedziałem co jest nie tak, ale nie wziąłem pod uwagę, że nawet w podstawach OOP mówią, że metoda powinna zwracać jakąś wartość.
nospor
Jesli twoja metoda, rzuca wyjatkiem, to zwracanie true tutaj tez nie ma wiekszego sensu. Dlatego caly czas ci mowie, ze twoj IF ELSE jest bez sensu w tym przypadku.
ALbo wywal wyjatek i zwraca true albo false i wowczas IF ELSE ma racje bytu, albo rzucaj tym wyjatkiem i lap wyjatki TRY CATCH. Ale nie mieszaj tych dwoch metod.
PawelC
Wywaliłem wyjątek i zwracam true, dalej to już instrukcja if sprawdza co zostało zwrócone smile.gif Dziękuję bardzo za wskazanie błędów, teraz przynajmniej wiem, o co chodzi.
nospor
Cytat
Wywaliłem wyjątek i zwracam true,
Mamy tylko nadzieje, ze w miejscu wywalonego wyjatku dales return false ?
PawelC
Oczywiście smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.