Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Biblioteka (książki)
Forum PHP.pl > Inne > Oceny
Fifi209
Witam, pisanie tych klas zaczęło się od pracy semestralnej gdzie miałem zaprojektować bazę danych biblioteki - pomyślałem: "a jakby tak w php napisać w ramach ćwiczeń całą obsługę biblioteki?"

I tak powstał mały projekt, plików jest kilka + plik z testem (index.php) dlatego wrzucam w formie paczki .zip
Biblioteka.zip

Proszę o ocenę, ew. pomysły jak coś lepiej rozwiązać smile.gif
potreb
Kiedyś chciałem napisać skrypt biblioteki, jednak jak to bywa lepiej wydać 100 tyś na gów.. niż wcześniej pomyśleć. Co do kodu, ogólnie nie będę mocno oceniał, ale ładnie sleep.gif
ano
W class_books:
  1. if (empty($title)) {
  2. throw new BooksException('Book Title is Empty!');
  3. }
  4.  
  5. $isbn = $obj->getISBN();
  6. if (empty($isbn)) {
  7. throw new BooksException('Books ISBN is Empty!');
  8. }
  9.  
  10. $authors = $obj->getAuthors(false);
  11. if (count($authors) < 1) {
  12. throw new BooksException('Book Authors is Empty!');
  13. }

to raczej powinno być sprawdzane na poziomie obiektu Book.

A co powiesz na taką koncepcję tej metody?:
  1. public function addBook(Book $obj) { //zwraca TRUE jeśli dodano książkę
  2. $id = $obj->getID();
  3. $warunek = true; //boolean
  4.  
  5. for($i = 0; $i<$this->_books.length&&warunek; $i++) {
  6. $b_obj = $this->_books[$i];
  7. $warunek = !($b_obj->getID() == $id);
  8. }
  9.  
  10. if($warunek) {
  11. $this->_books[] = $obj;
  12. }
  13.  
  14. return $warunek;
  15. }


//i analogicznie w klasie Authors

Poza tym: czemu w Book i Author nie ma konstruktorów, które przyjmują parametry? Chodzi mi o to, że łatwiej w jednym konstruktorze 'utworzyć książke' niż tworzyć 'pusty konstruktor' a potem wywoływać miliony setterów...

Tak samo w books i authors - moim zdaniem powinieneś przygotować konstruktor, który przyjmuje tablicę książek/autorów. Myślę, że w przyszłości może to czasem ułatwić sprawę.

A dodatkowo: czemu by nie napisać metody w Books: addBooks() przyjmującej kolekcję książek? => znowu moim zdaniem ułatwienie w przyszłości. A w niej pętlą wystarczyłoby lecieć i po kolei wywoływać addBook().

pozdro, Antoni
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.