• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Class - programowanie obiektowe

0 głosów
198 wizyt
pytanie zadane 12 kwietnia 2018 w PHP przez matizuu Obywatel (1,080 p.)
Zastanawiam się nad klasami, nie mogę tego zrozumieć.

Ok, człowiek widzi obiekty, tworzymy klasę aby opisać jakiś obiekt - ale właściwie wszystko możemy tak zrobić.

Potem ktoś przedstawił to na podstawie jakiejś gry, i potworków, których będzie do pokonania kilka i każdy z nich stworzony został przez tę samą klasę.

Już myślałem, że rozumiem, teraz mam rejestracje na stronę - jaki jest sens tworzenia rejestracji na podstawie klasy?

3 odpowiedzi

+1 głos
odpowiedź 12 kwietnia 2018 przez CenterPL Pasjonat (19,110 p.)
wybrane 12 kwietnia 2018 przez matizuu
 
Najlepsza
Kiedyś kiedyś miałem podobny problem, pomogło zapoznanie się z MVC. Ma to ogólnie bardzo duży sens, możesz łatwo wszystko sobie rozdzielić, przy złożonych systemach doceniłbyś to na pewno.

W każdym razie klasą może być jakieś zdarzenie, może być komenda, może być użytkownik, który ma się tworzyć, możesz mieć klasę połączenia z bazą danych, może to być kontroler. To jest problem uczenia programowania obiektowego - każdy tłumaczy to na przykładzie samochodzików, czy zwierzątek, ale gdy przychodzi zderzenie z realnym systemem, to taki biedny programista teraz zastanawia się... WTF?!

Załóżmy, że masz taki wytwór, jak klasa UsersController. Co nam mówi nazwa - no coś do kontrolowania użytkowników. Mniej więcej. W tej klasie masz metodę (funkcję) o nazwie register i taka metoda przyjmuje sobie dane użytkownika i tworzy go (abstrahując od konkretnej implementacji). Ale w tej klasie możesz mieć też metodę login, która weźmie dane usera i go zaloguje i pewnie utworzy sesję czy coś. Możesz mieć tam też metodę remove, czy update. Nazwy mówią same przez się.

Inną, bardziej techniczną sprawą jest np możliwość autoładowania klas, przestrzenie nazw itp. Nie przejmuj się, jeśli teraz nie do końca to rozumiesz. W pewnym momencie stanie się to wręcz naturalne.
komentarz 12 kwietnia 2018 przez matizuu Obywatel (1,080 p.)
A co z całą walidacją takiej rejestracji, walidację zapisuje w ramach klasy?
komentarz 12 kwietnia 2018 przez CenterPL Pasjonat (19,110 p.)

Wiesz, to zależy od konretnego rozwiązania w architekturze. Programowanie jest dziedziną bardzo elastyczną. Ja ci powiem "zrób to tak", sto innych osób będzie miało sto różnych innych metod na to. 

Może to wyglądać różnie, możesz mieć jakiś walidator, który będzie osobną klasą, możesz mieć jakąś pojedynczą metodę, a równie dobrze możesz walidacje pól pisać ręcznie za każdym razem, co oczywiście jest kiepskim rozwiązaniem. 

<?php
namespace App/Controller;

class UsersController
{
    public function register()
    {
        $validator = new Validator();        
        if($validator->notEmpty($_POST['username'] && $validator->minLenght(5,$_POST['username'])) {
            $user = new User($_POST['username'];
        }
        // i tak dalej
    }
}

Ot tak to mogłoby w bardzo dużym uproszczeniu wyglądać

0 głosów
odpowiedź 12 kwietnia 2018 przez Neronys Bywalec (2,090 p.)
Widzisz klasy nie muszą zawsze reprezentować obiektu, mogą tylko rozszerzać jakąś funkcjonalność. (Klasa abstrakcyjna)

Na przykład przy rejestracji będzie Ci się tworzył obiekt z klasy User, w tej klasie user możesz mieć deklarację tego jak taki obiekt według Ciebie i zastosowań projektu powinien wyglądać czyli np masz założenia:

User musi mieć pola:

imie,nazwisko,data_urodzenia

Przy przesłaniu twojego formularza rejestracyjnego będzie tworzony obiekt z takimi polami a ty dzięki dodatkowym bibliotekom bedziesz mógł wydajniej zwalidować wprowadzone dane i wrzucić je do bazy.

No ale powiedzmy że chcesz jeszcze zapisywać coś do ciasteczek takieg usera czy do sesji wtedy tworzysz klase abstrakcyjną gdzie piszesz wszystkie metody do obsługi tych rzeczy i podpinasz ją pod klase User i tam z nich korzystasz.

Jasne - wszystko możesz robić strukturalnie, dopóki twój projekt ma jedną stronę główną i np rejestracje na newsletter gdzie nie musisz rejestrować usera tylko wysyłasz mu jakieś maile.

W każdym innym projekcie OPP jest lepsze bo zapewnia przejrzystość aplikacji, są jasne reguły co z czym po czym dziedziczy, łatwość implementacji zewnętrznych rozwiązań i przejrzystość to największe zalety OPP.

 

Peace
komentarz 12 kwietnia 2018 przez kap Stary wyjadacz (11,700 p.)
OOP to nie jest silver bullet i na OOP świat się nie kończy.
–1 głos
odpowiedź 12 kwietnia 2018 przez RafalS VIP (122,820 p.)
Sterowanie zuckerbergiem w podejściu obiektowym xD:
https://jbzdy.pl/obr/724242/cukier

Podobne pytania

0 głosów
1 odpowiedź 391 wizyt
pytanie zadane 18 września 2016 w PHP przez yorjano Użytkownik (560 p.)
0 głosów
2 odpowiedzi 299 wizyt
pytanie zadane 27 października 2018 w JavaScript przez kameleon Użytkownik (590 p.)
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 21 października 2018 w C i C++ przez leonka Nowicjusz (120 p.)

85,870 zapytań

134,642 odpowiedzi

298,914 komentarzy

56,738 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 926p. - rucin93
  2. 925p. - Whistleroosh
  3. 912p. - nidomika
  4. 876p. - adrian17
  5. 867p. - Michal Drewniak
  6. 866p. - Mikbac
  7. 863p. - Mateusz Bogdan
  8. 859p. - CC PL
  9. 797p. - Argeento
  10. 704p. - ScriptyChris
  11. 683p. - tokox
  12. 660p. - Vinox
  13. 645p. - TheLukaszNs
  14. 642p. - s. Dorota Kowalewska
  15. 601p. - Marcin Harasimowicz
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...