Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Podstawy OOP, konstruktywne opinie mile widziane oraz nakierowanie na dobry trop
in5ane
post
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Cześć, otóż zacząłem sobie przyswajać czyste OOP w PHP. Wcześniej wiele pisałem już we frameworkach kod obiektowy, jednakże nigdy nie pisałem własnej klasy, ani dokładniej nie zagłębiałem się w sposób działania klas oraz ich obiektów. Z palca napisałem malutką klasę, czy ktoś może zerknąć i powiedzieć mi, czy dobrze rozumuję zasady działania programowania obiektowego i czy w miarę dobrym stylu piszę? Oczywiście pomijam MVC - oddzielanie widoku tutaj od zarządzania całą resztą. Proszę o konstruktywną opinię. W końcu człowiek musi zacząć programować własne aplikacje pisząc je w stylu obiektowym (pomijam frameworki). Poniżej prezentuję swój kod:
  1. <?php
  2. class Article
  3. {
  4. public $id;
  5. private $title;
  6. private $content;
  7. private $author;
  8. private $comment;
  9.  
  10. public function showArticle()
  11. {
  12. /* Reference to MySQL to receive information */
  13. return $this->id;
  14. }
  15. public function deleteArticle()
  16. {
  17. /* Reference to MySQL and delete article in MySQL */
  18. if (1 == 1)
  19. return true;
  20. else
  21. return false;
  22. }
  23. public function addArticle($title, $content)
  24. {
  25. /* Security input variables and adding the article to MySQL */
  26. return rand(); // Return added article ID, for example used rand() function
  27. }
  28. public function commentArticle($author, $comment)
  29. {
  30. /* Security input variables and adding the article to MySQL */
  31. $article_id = $this->id;
  32. // For example: 'INSERT INTO comments VALUES ('', '$author', '$comment', $article_id)'
  33. }
  34. }
  35.  
  36. $oArticle = new Article();
  37. if (isset($_GET['id']))
  38. {
  39. $oArticle->id = $_GET['id'];
  40. echo 'Artykul o ID: '.$oArticle->showArticle().' - <a href="?id='.$_GET['id'].'&delete=true">usun</a>';
  41. if (isset($_GET['delete']) && $_GET['delete'] == 'true')
  42. {
  43. echo '<br /><br />';
  44. if ($oArticle->deleteArticle() == true)
  45. echo 'Artykul usuniety';
  46. else
  47. echo 'Blad';
  48. }
  49. }
  50. else
  51. {
  52. echo 'Dodaj nowy artykul:<br />$title = \'Testowy artykul\';<br />$content = \'tresc... tresc... tresc... tresc... tresc... tresc... tresc... tresc... tresc...\';<br /><br />';
  53. $title = 'Testowy artykul';
  54. $content = 'tresc... tresc... tresc... tresc... tresc... tresc... tresc... tresc... tresc...';
  55. echo $oArticle->addArticle($title, $content);
  56. }
  57. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
in5ane
post
Post #2





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Czy ta klasa jest już dobrą próbą programowania obiektowego? W dobrym kierunku idę?
  1. <?php
  2. class Thumbnail
  3. {
  4. public $name;
  5. private $img;
  6. private $width;
  7. private $height;
  8. private $img_t;
  9. private $width_t = 150;
  10. private $height_t = 150;
  11.  
  12. public function __construct($name)
  13. {
  14. $this->name = $name;
  15. $this->img = imagecreatefromjpeg($this->name);
  16. $this->width = imagesx($this->img);
  17. $this->height = imagesy($this->img);
  18. }
  19.  
  20. public function createThumb()
  21. {
  22. $this->img_t = imagecreatetruecolor($this->width_t, $this->height_t);
  23. imagecopyresampled($this->img_t, $this->img, 0, 0, 0, 0, $this->width_t, $this->height_t, $this->width, $this->height);
  24. imagejpeg($this->img_t, 'thumb_'.$this->name, 100);
  25. }
  26.  
  27. public function __destruct()
  28. {
  29. imagedestroy($this->img);
  30. imagedestroy($this->img_t);
  31. }
  32. }
  33.  
  34. $oThumb = new Thumbnail('20120229028.jpg');
  35. $oThumb->createThumb();
  36. ?>


@edit:
Oczywiście, można by dodać jeszcze możliwość dodawania rozmiaru miniatury (opcjonalna rzecz). Ale ogólnie chcę wiedzieć, czy programowanie obiektowe (takie typowe) idzie w tym kierunku, jak ja napisałem tą klasę.

@edit2:
No i zrobiłem tylko dla JPG, oczywiście normalnie powinno się zczytać rozszerzenie (np. dla JPG, GIF i PNG).

Ten post edytował in5ane 18.06.2013, 19:43:09
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 01:32