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

Class - programowanie obiektowe

VPS Starter Arubacloud
0 głosów
255 wizyt
pytanie zadane 12 kwietnia 2018 w PHP przez matizuu Obywatel (1,100 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,070 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,100 p.)
A co z całą walidacją takiej rejestracji, walidację zapisuje w ramach klasy?
komentarz 12 kwietnia 2018 przez CenterPL Pasjonat (19,070 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,620 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ź 649 wizyt
pytanie zadane 18 września 2016 w PHP przez yorjano Użytkownik (560 p.)
0 głosów
2 odpowiedzi 421 wizyt
pytanie zadane 27 października 2018 w JavaScript przez kameleon Użytkownik (590 p.)
0 głosów
1 odpowiedź 338 wizyt
pytanie zadane 21 października 2018 w C i C++ przez leonka Nowicjusz (120 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...