![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.03.2021 Ostrzeżenie: (0%) ![]() ![]() |
Cześć wszystkim,
zaczynam przechodzić na obiektowe pisanie skryptów. Z racji tego, że jestem typowym samoukiem nie do końca jestem pewien czy rozumiem pisanie w klasach. Obiło mi się o uszy, że można pisać w klasach ale nie rozumieć obiektowości. Poniżej podsyłam klasę kalendarza, która wczoraj napisałem. Można ją zaimplementować praktycznie bez grzebania w Htmlu.
Chciałbym aby jakaś surowa dusza wytknęła mi błędy i podpowiedziała na co zwrócić uwagę. Dzięki za konstruktywną krytykę ! (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 22.03.2021 Ostrzeżenie: (0%) ![]() ![]() |
Na pierwszy rzut oka jest okej, ale po co przechowujesz elementy HTML w zmiennych? Nie lepiej jest mieć template HTML i w elementach wyświetlać wartości?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem nie jest okej. Klasa którą utworzyłeś ma dwie odpowiedzialności, powinieneś to co najmniej podzielić. Druga sprawa to większość argumentów które tworzysz w konstruktorze powinny być przekazywane jako parametry wtedy taki obiekt jest bardziej generyczny. Zamiast używania date proponuję używanie DateTime/DateTimeInterface. Dodatkowo trzymaj się jakichś standardów klasy pisze się w formacie: NazwaTwojejKlasy już nie wspominając o nazwach pól . Metody prywatne powinny być pod public i pod protected. Dodawaj dokumentacje i typowanie do metod i pól w klasie tak aby było wiadomo co one maja zwracać.
Ten post edytował rad11 23.03.2021, 09:15:59 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.03.2021 Ostrzeżenie: (0%) ![]() ![]() |
goku800
Zwróć uwagę, na to, że taplatka by się chyba nie sprawdziła w dwóch różnych miesiącach dlatego "wypluwam" całą konstrukcje kalędarza. Rad dzięki za odpowiedź!
• Ustawiam private ponieważ nie chce aby właściwości czy metody były dziedziczone. Takie pierwsze kroki..
• Przekazywać właściwości z konstruktora jako parametry metod a nie bezpośrednio przekazywane do nich? Przepraszam, ne rozumiem pojęcie generyczności w tym kontekście - tutaj wychodzą moje braki. Dziękuje !
• Czy tutaj masz na myśli PSR? zdecydowanie muszę to nadrobić. Nazwy pól ? tutaj wychodzą moje braki. Dziękuje !
• Z tym nie będzie najmniejszego problemu. Ropson, przeglądając forum chyba najbardziej na Ciebie liczyłem (IMG:style_emoticons/default/smile.gif)
Wywalam początkowe zero z date('m') w przypadku poniżej 10 czyli zamiast 05 dostaje 5 i mogę to wrzucić do metody calendarData() jako klucz tablicy. Jeśli można zostawić 05 to - tutaj wychodzą moje braki. Na pewno zastosuje się do waszych uwag. Od razu by nie zakładać kolejnego tematu nasuwa mi się kolejne pytanie. Czy każda zmienna/właściwość musi być zdefiniowana na początku klasy i posiadać modyfikator dostępu? Nie za bardzo mam pomysły jak wykorzystać klasy. Macie może pomysły jak mogę sobie poćwiczyć i zrozumieć zastosowanie bo pisanie klasy samochód o kolorze.... nie za bardzo mnie urządza (IMG:style_emoticons/default/biggrin.gif) Jeszcze raz dzięki! |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
A co to są za parametry metody: 'no' (i chyba - 'yes')? A czemu nie a i b? Masz typ boolean, true albo false, 0 albo 1.
Osławione i klepane już na tym forum, nie: Kod if($a == $b) tylko: Kod if($a === $b) Szczerze nie sprawdzałem dokładnie, ale czy wszystkie atrybuty są Ci potrzebne, bo w metodzie calendarData można od razu przypisać do klucza odpowiednią wartość bez użycia atrybutu. Kod html-a w klasie to nieporozumienie, przynajmniej dla mnie. PSR zdecydowanie do poczytania. Co można pisać? Co Ci na myśl przyjdzie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.03.2021 Ostrzeżenie: (0%) ![]() ![]() |
Gino,
odwołując się obiektem to metody klasy w parametrach ustawiasz czy np. nagłówek kalendarza ma być wypisany ? no to 'on' jeśli nie to podaj w parametrze co tam chcesz 'off' (IMG:style_emoticons/default/wink.gif) Jeśli kod html w klasie to pomyłka to naprawdę nie mam pomysłu jak wykorzystać klasy. hmm.. aktualnie w moim mini projekcie będę wypisywał taskii na podstawie statusów z bazy ale mogę to zrobić PDO i odpowiednim zapytaniem, nie widzę tutaj potrzeby klas.. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
A kto Ci zabroni napisać własną obsługę baz danych opartą o PDO (tak dla wprawki i do innych celów) ? Jeżeli parametr ma przyjąć jedną z dwóch wartości to true lub false, to intuicyjne.
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Wywalam początkowe zero z date('m') w przypadku poniżej 10 czyli zamiast 05 dostaje 5 i mogę to wrzucić do metody calendarData() jako klucz tablicy. Jeśli można zostawić 05 to - tutaj wychodzą moje braki. Ach, usuwasz zero haha. Ok. No to zamiast date('m') i potem cudowania, poprostu uzyj date('n') Manual sie klania (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.03.2021 Ostrzeżenie: (0%) ![]() ![]() |
(IMG:style_emoticons/default/wstydnis.gif) Tak jak pisałem -> niedouczenie moje
Podajcie proszę jak najwięcej przykładów klas do nauki. 1) Paginacja 2) Mailer 3) ? 4) ? 5) ? 6) ? 7) ? 8) (IMG:style_emoticons/default/co_jest.gif) Za to dziękuje bardzo (IMG:style_emoticons/default/guitar.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Najpierw zrób może ten kalendarz porządnie i pokaż efekty po przepisaniu.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 16:08 |