Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uniwersalne metody
Forum PHP.pl > Forum > PHP > Object-oriented programming
PawelC
Napisałem sobie klasę do obsługi IP banowanie, odbanowanie, wylistowanie wszystkich i jednego wybranego.
Klasa wygląda tak:
  1. <?php
  2. class IP{
  3. protected $_db;
  4.  
  5. public function __construct(DB $db)
  6. {
  7. $this->_db=$db;
  8. }
  9.  
  10. /**
  11. * Add new IP
  12. * @param string $ip
  13. * @throws Exception
  14. */
  15. public function add($ip)
  16. {
  17. $result=$this->_db->prepare("INSERT INTO zbanowanie VALUES('',:ip)");
  18. $result->bindParam(':ip', $ip, PDO::PARAM_STR);
  19. if(!$result->execute()){
  20. throw new Exception('IP nie zostało zbanowane!');
  21. }
  22. }
  23.  
  24. /**
  25. * Unlock IP
  26. * @param string $ip
  27. * @throws Exception
  28. */
  29. public function unlock($ip)
  30. {
  31. $result=$this->_db->prepare("DELETE FROM zbanowane WHERE ip=:ip");
  32. $result->bindParam(':ip', $ip, PDO::PARAM_STR);
  33. if(!$result->execute()){
  34. throw new Exception('IP nie zostało odbanowane!');
  35. }
  36. }
  37.  
  38. /**
  39. * Show all blocked IP
  40. * @throws Exception
  41. */
  42. public function showAll()
  43. {
  44. $result=$this->db->prepare("SELECT * FROM zbanowane");
  45. if(!$result->execute())
  46. {
  47. throw new Exception("Wystąpił bląd podczas pobierania listy IP!");
  48. }else{
  49. $wynik=$result->fetch(PDO::FETCH_ASSOC);
  50. return $wynik;
  51. }
  52. }
  53.  
  54. /**
  55. * Show selected IP
  56. * @param int $id
  57. */
  58. public function showOne($id)
  59. {
  60. $result=$this->db->prepare("SELECT ip FROM zbanowane WHERE id=:id limit 1");
  61. $result->bindParam(':id',$id, PDO::PARAM_INT);
  62. if(!$result->execute())
  63. {
  64. throw new Exception("Wystąpił bląd podczas pobierania zbanowanego IP!");
  65. }else{
  66. $wynik=$result->fetch(PDO::FETCH_ASSOC);
  67. return $wynik;
  68. }
  69. }
  70. }


Chodzi mi o metody showAll() i showOne() czy jest jakiś sposób, aby zrobić jedną uniwersalną metodę do pobrania jednego, jak i wszystkich IP. Czy jedyny sposób to taki jaki zastosowałem?
DiH
A czy nie możnaby tak?

  1. public function showIps()
  2. {
  3. $id = func_get_args(1);
  4.  
  5. if($id == null) {
  6. $result=$this->db->prepare("SELECT * FROM zbanowane");
  7. }
  8. else {
  9. $result=$this->db->prepare("SELECT ip FROM zbanowane WHERE id=:id limit 1");
  10. $result->bindParam(':id',$id, PDO::PARAM_INT);
  11. }
  12.  
  13. if(!$result->execute()) {
  14. throw new Exception("Wystąpił bląd podczas pobierania zbanowanego IP!");
  15. }
  16. else{
  17. $wynik=$result->fetch(PDO::FETCH_ASSOC);
  18. return $wynik;
  19. }
  20. }
PawelC
O coś w tym stylu mi chodziło smile.gif Dziękuję za pomoc.
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.