Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SOLID i Zasada jednej odpowiedzialności, jak można zastosować tą zasadę dla tych klas i takiego wywołania
Nortonek
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 29.11.2003

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


Witam

Mam prośbę o nakierowanie mnie na temat pierwszej zasady SOILID, jak można zastosować tą zasadę dla tych klas i takiego wywołania,

w pierwszej klasie odwołuję się do drugiej, jednak znając życie będzie taka sytuacja że będę musiał przekazać więcej parametrów a nie tylko ID książki

i będę musiał modyfikować 2 klasy.


  1. <?php
  2.  
  3.  
  4. class Ksiazki {
  5.  
  6. private $id_ksiazki;
  7.  
  8. function __construct($id){
  9. $this->id_ksiazki - $id;
  10. }
  11.  
  12. private function zapisz_oddanie_zniszczonej_ksiazki(){
  13. global $db, $table_ksiazki_oddane;
  14.  
  15. $result0 = $db -> Execute("UPDATE $table_ksiazki_oddane SET `oddana`= '1' WHERE `id_ksiazki`='".$this->id_ksiazki."' ");
  16.  
  17. $Ksiazki_Zniszczone = new Ksiazki_Zniszczone();
  18. $Ksiazki_Zniszczone-> insert_ksiazki_zniszczone($this->id_ksiazki);
  19. }
  20.  
  21. }
  22.  
  23.  
  24. class Ksiazki_Zniszczone{
  25.  
  26. public function insert_ksiazki_zniszczone( $id_ksiazki){
  27. global $db, $table_ksiazki_zniszczone;
  28.  
  29. $result0 = $db -> Execute("UPDATE $table_ksiazki_zniszczone SET `zniszczenie_ksiazki`= '5' WHERE `id_ksiazki`='$id_ksiazki' ");
  30. }
  31.  
  32. }
  33.  
  34. ?>


Ten post edytował Nortonek 23.02.2014, 13:45:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Na sam początek: nie próbuj samemu robić mapowania bazy danych na model obiektowy (ORM). Jest to wbrew pozorom dosyć skomplikowane zadanie i bez odpowiedniej wiedzy ciężko Ci będzie zrobić cokolwiek co będzie miało jakieś zalety w porównaniu do "zwykłego klepania zapytań". Skorzystaj z Doctrine'a, w większości miejsc jest on całkiem dobrym przykładem zasad SOLID.

Co do Twojego kodu:
1. Powinieneś przekazywać obiekty jako argumenty, a nie ich wewnętrzne właściwości.
2. Jeżeli klasa ma za zadanie reprezentować pojedynczy obiekt (np. książkę) powinna nazywać się Książka, nie Książki.
3. Jedna klasa nie powinna zajmować się reprezentacją pojedynczej książki jak i operacjami bezpośrednio na bazie. Na dobrą sprawę powinieneś mieć tutaj kilka obiektów:
- Książka reprezentujący pojedynczą książkę,
- MenadżerKsiążek, którego metoda oddajZniszczonąKsiążkę przyjmie jako argument obiekt klasy Książka. Pojawienie się w nazwie klasy słowa "Menadżer" z reguły sugeruje jej zbyt szeroki zakres obowiązków, ale tutaj mamy tylko przykład,
- KsiążkaDAO - po prostu DAO dla typu Książka (czy jakiś bardziej generyczny), wykorzystywany przez menadżera.
4. Nie powinieneś korzystać z globali.
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: 3.10.2025 - 08:45