Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt] Dodawanie zdjęć - OOP w php 4
Forum PHP.pl > Inne > Oceny
Koniczynka
Od niedawna zacząłem programować obiektowo, a przynajmniej tak mi się wydaje. Mam dlatego prośbę dla was, znających się na OOP od dawna, o sprawdzenie poniższej klasy (php 4).


  1. <?php
  2. class fotka {
  3.  
  4. var $opis1;
  5. var $SUBMIT;
  6. var $nazwa1;
  7. var $rodzaj1;
  8. var $rozszerzenie1;
  9. var $kategoria;
  10. var $hotelnazwa;
  11.  
  12.  function dodawanie2() 
  13.  {
  14. if ($_POST['SUBMIT'] && $this->opis1 != '' && $this->nazwa1 != '' && $this->rodzaj1['extension'] == 'jpg'
  15. || $_POST['SUBMIT'] && $this->opis1 != '' && $this->nazwa1 != '' && $this->rodzaj1['extension'] == 'jpeg'
  16. || $_POST['SUBMIT2'] && $this->opis1 != '' && $this->nazwa1 != '' && $this->rodzaj1['extension'] == 'jpg'
  17. || $_POST['SUBMIT2'] && $this->opis1 != '' && $this->nazwa1 != '' && $this->rodzaj1['extension'] == 'jpeg'
  18. ) {
  19.  
  20. $this->data = date("Y-m-d");
  21.  
  22. $this->hotelnazwa2 = "$this->hotelnazwa$this->data$this->nazwa1";
  23.  
  24. move_uploaded_file($this->rozszerzenie1, $this->nazwa1);
  25. $this->img = imagecreatefromjpeg("$this->nazwa1");
  26. $this->width = imagesx($this->img);
  27. $this->height = imagesy($this->img);
  28.  
  29. $this->width_mini = 250;
  30. $this->height_mini = 300;
  31. $this->img_mini = imagecreatetruecolor($this->width_mini, $this->height_mini);
  32.  
  33. imagecopyresampled($this->img_mini, $this->img, 0, 0, 0, 0, $this->width_mini , $this->height_mini, $this->width , $this->height);
  34.  
  35.  
  36. imagejpeg($this->img_mini, "$this->hotelnazwa2", 80);
  37. imagedestroy($this->img);
  38. imagedestroy($this->img_mini);
  39.  
  40.  
  41. unlink("$this->nazwa1");
  42.  
  43.  
  44. mysql_query("INSERT INTO fotki (
  45. nazwa_fotki , opis_fotki , kategoria_fotki , do_fotki)
  46. VALUES 
  47. ('$this->hotelnazwa2' , '$this->opis1' , '$this->kategoria' , '$this->hotelnazwa' )");
  48.  
  49. echo "Twoje zdjęcie $this->hotelnazwa2 zostało dodane <br />";
  50.  
  51. }
  52.  
  53.  
  54. elseif ($_POST['SUBMIT'] && $this->hotelnazwa != '' && $this->opis1 != ''
  55. || $_POST['SUBMIT2'] && $this->hotelnazwa != '' && $this->opis1 != '') {
  56. echo "Dodaj fotografi&ecirc;";}
  57.  
  58. elseif ($_POST['SUBMIT'] && $this->opis1 == '' && $this->hotelnazwa != '' && $this->rodzaj1['extension'] == 'jpg' || 
  59. $_POST['SUBMIT'] && $this->opis1 == '' && $this->hotelnazwa != '' && $this->rodzaj1['extension'] == 'jpeg'
  60. ||$_POST['SUBMIT2'] && $this->opis1 == '' && $this->hotelnazwa != '' && $this->rodzaj1['extension'] == 'jpg' || 
  61. $_POST['SUBMIT2'] && $this->opis1 == '' && $this->hotelnazwa != '' && $this->rodzaj1['extension'] == 'jpeg' ) {
  62. echo "Je&iquest;eli dodajesz zdjęcie, musisz dodać i opis";
  63. }
  64.  
  65. elseif ($_POST['SUBMIT'] && $this->rodzaj1['extension'] != 'jpg' && $this->hotelnazwa != '' && $this->opis1 != '' ||
  66. $_POST['SUBMIT'] && $this->rodzaj1['extension'] != 'jpeg' && $this->hotelnazwa != '' && $this->opis1 != ''
  67. || $_POST['SUBMIT2'] && $this->rodzaj1['extension'] != 'jpg' && $this->hotelnazwa != '' && $this->opis1 != '' ||
  68. $_POST['SUBMIT2'] && $this->rodzaj1['extension'] != 'jpeg' && $this->hotelnazwa != '' && $this->opis1 != '') {
  69. echo "Musisz wgrać zdjęcie o formacie JPG lub JPEG";}
  70.  
  71. }
  72.  
  73. }
  74. ?>


Niby wszystko działa tak, jak zamierzyłem. Ale czy skrypt został optymalnie wykonany ? Byłbym bardzo wdzięczny za wszelkie wskazówki i uwagi.
Cysiaczek
No niestety Cie rozczaruję, ale z OOP ma to tyle wspólnego, że jest ujęte w klasę. :\

OOP to programowanie zorientowane obiektowo. Nie chodzi zatem o to, żeby używać klas, tylko aby program korzystał z obiektów do wykonania swoich zadań. Obiekty te wchodzą ze sobą w różne relacje. Twój kod, to kod proceduralny zawarty w klasie. Kolejna sprawa, to hermetyzacja. używasz w ciele klasy tablic globalnych, co jest absolutnie niedopuszczalne, bo niweczy wszelkie korzyści płynące z obiektowości.
Na pocieszenie.
Każdy kiedyś zaczynał i nie ma takich błędów, których programiści nie popełnili. Poczytaj o projektowaniu, o wzorcach projektowych, bo to jest esencja OOP. Zapoznaj się z pojęciami polimorfizm, delegacja, hermetyzacja, abstrakcja, interfejs, agregacja, asocjacja... i jeszcze pewnie kilkanaście. W Wikipedii znajdziesz sporo wyjaśnień, ale polecam dobrą książkę.

Pozdrawiam.
Koniczynka
To sprowadziłeś mnie na ziemię, bo myślałem, że weszło mi to po kilku godzinach prób. Dziękuję - na pewno popracuję nad znalezieniem właściwego toru. Niebawem postaram się wkleić poprawiony skrypt.
ferr
No i warto dodac, bys zainteresowal sie OOP w kontekscie PHP5. Ten w PHP4 daje niestety male mozliwosci, o ile w ogole mozna to nazwac programowaniem obiektowym.
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.