![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) ![]() ![]() |
Nadszedł najwyższy czas żeby nauczyć się programowania obiektowego. Przeczytałem wiele tutoriali w sieci, ale to niestety dla mnie za mało. Wszędzie piszą co to klasa i tak dalej, ale nigdzie nie znalazłem wykorzystania w praktyce. Nie ma co ukrywać, że na jednej klasie żadnej projekt inny niż "hello world" nie powstanie.
Czy ktoś może polecić jakiś dobry tutorial gdzie były by jakieś zaaansowane przykłady programowania obiektowego? Czego szukam? Na przykład sposobu na rozwiązanie takiego problemu: Dajmy na to że mamy 3 klasy. Jedną swoją i dwie gotowe. Klasa gotowa to np mPDF, która dla uproszczenia będzie wyglądała tak:
Kolejną gotową klasą będzie PHPmailer, który w uproszczeniu będzie taki:
Teraz mamy sobie naszą własną klasę, która powiedzmy odpowiada za stworzenie faktury. Coś się dzieje i w efekcie otrzymamy HTML.
Co bym chciał zrobić? Chciałbym wygenerować html z fakturą, następnie zrobić z tego pdf'a i wysłać go mailem do klienta. Pojawia się pytanie jak? Oczywiście możemy potworzyć po koleji obiekty i "proceduralnie" wysłać naszą fkaturę, ale przecież nie o to chodzi.
To nie jest ładne rozwiązanie i najlepiej było by dodać do naszej klasy metodę
Tylko pojawia się pytanie jak to zrobić? Ten post edytował alex19 9.08.2014, 07:09:41 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) ![]() ![]() |
Wykorzystaj kompozycje i dziedziczenie. Mogłbyś też wykorzystać wzorzec projektowy "metoda szablonowa". Dzięki temu możesz zmieniać kroki twojego i robić różne "szablony" zależności od potrzeb. W kodzie wyglądało by to tak: Masz na myśli dziedziczenie po klasach PHPmailer i mPDF czy coś takiego jak w kodzie? Kod jest fajny, ale to niestety moim zdaniem kod z serii "tych magicznych", które nie wiadomo co robią a działają. Cytat(globalow) Warto jednak pamiętać o zasadzie jednej odpowiedzialności... O czym?? Cytat(Pyton_000) Alex to co zrobiłeś jest prawie dobre Zrób na zasadzie:
Czyli brak tu jakiejkolwiek filozofii... po prostu w obiekcie tworzony jest kolejny i tak dalej i tak dalej?
Rozumiem, że to uproszczenie i chodzi o podstawienie $html do zmiennej klasy, która tu nie została zdefiniowana?
Dlaczego tak, skoro dalej musimy zrobić
A co z "konfiguracja", tak jak w przypadku mailera? Czy można ją zdefiniować w jakiś inny sposób niż w metodzie? Tu akurat przykład jest taki sobie, ale myślę np pod kątem bazy danych - coś na zasadzie otwarcia połączenia/uchwytu na początku skryptu i korzystania z niego aż do zakończenia, tak żeby móc już tylko wykonywać zapytania do bazy i nie robić nic innego.
Jak by coś takiego wyglądało obiektowo, żeby nie powielać kodu, a korzystać bez ograniczeń z bazy (tej samej) z różnych obiektów w stylu:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 16:03 |