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----


A mógłbyś powiedzieć, czy to jest poprawnie napisana klasa? W dobrym kierunku idę? Oczywiście nie mówię tutaj o funkcjonalności i użyteczności.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(in5ane @ 19.06.2013, 09:35:24 ) *
A mógłbyś powiedzieć, czy to jest poprawnie napisana klasa? W dobrym kierunku idę? Oczywiście nie mówię tutaj o funkcjonalności i użyteczności.


Jak najbardziej, wszystsko jest poprawnie i idziesz w dobrym kierunku. Jednak ten fragment:

  1. $this->img = imagecreatefromjpeg($this->name);
  2. $this->width = imagesx($this->img);
  3. $this->height = imagesy($this->img);


mógłbyś umieścić w funkcji createThumb. Nie potrzebujesz aż tylu właściwości, na dobrą sprawę wystarczyłaby sama ścieżka do pliku, reszta mogłaby pozostać zmiennymi lokalnymi wewnątrz metody klasy. Ewentualnie mógłbyś dorzucić wysokość i szerokość miniaturki lub skalę pomniejszenia jako właściwości, reszta jest raczej zbędna.
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: 6.10.2025 - 17:28