Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak zrozumieć idee OOP?
Daav
post 5.06.2016, 04:41:38
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.09.2015

Ostrzeżenie: (0%)
-----


Cześć wszystkim!

Nie wiem czy tylko ja mam taki problem, ale z tego co wypluła mi wyszukiwarka to wygląda na to, że nie jestem sam (znalezione temat nie dały mi odpowiedzi) smile.gif
Mam problem z nauką obiektowego php.
Hobbistycznie php nauczyłem się parę lat temu i raczej przyszło mi to bez większych problemów. Większych - mam na myśli takich jak OOP. Z teorią nie jest tak źle, wiem co to klasa, pola, metody i inne ciekawe rzeczy, bo przejrzałem masę kursów, żeby spróbować pojąć OOP. Ale w praktyce ..? Nie wiem jak tego użyć (poprawnie)? Strukturalnie napiszę wszystko na co mam pomysł i ochotę - OOP -> nie napiszę prostego systemu logowanie i autoryzacji, bo nie chce tworzyć klas etc. na siłę i spędzić później godziny na zamartwianiu się czy to poprawnie napisane.

To nie jest tak, że przeczytałem jeden kurs i się poddałem. Dalej buszowałem w internecie. Trafiałem na fora, gdzie ludzie polecali uczyć się na jakichś małych (czasami dużych) frameworkach. Więc idąc za ciosem, spróbowałem.. ale jak używać czegoś o czym nie mam pojęcia jak działa? OK, jest dokumentacja i wszystko na tacy, ale nie na tym mi zależy. Chyba można napisać jakąś prostą strone bez frameworka?

Na innych stronach znalazłem kolejne porady: Tutaj masz gościa, który pokazuje jak napisać prosty framework : link - po tym wszystko zrozumiesz!
Pomyślałem, że może to być moja szansa. Film na youtube, od paru lat jestem w UK więc nie przeszkadzało mi, że po angielsku. Ale jedyne co z tego się nauczyłem to podstawy o wzorcu MVC - zawsze coś smile.gif

Próbowałem teorią, uczyć się przez przykłady, oglądąć gości na youtube, a nawet samemu coś pisać - ale nic mi z tego nie przyszło. Może jestem za głupi, a może źle to próbuję zrozumieć?
Miał ktoś taki problem? Jak przejść z pisania kodu strukturalnego na OOP? Jest na to jakiś sposób?

PS: Słyszałem, że OOP w C++ jest podobne, akurat mam książkę Grębosza, mógłbym zerknąć na programowanie obiektowe, ale nie chce sobie jeszcze bardziej namieszać i skreślać oop w php, bo to moje hobby.

Z góry dzięki, za porady.




Go to the top of the page
+Quote Post
LowiczakPL
post 5.06.2016, 19:38:22
Post #2





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Polecam Książkę "PHP Obiekty, wzorce, narzędzia" Matt Zandstra, książka ma ciekawe przykłady, mi podpasiły te z przykładami gry Civilization ponieważ lubię pisać gierki.

Co do używania poprawnie OOP to raczej bym to totalnie olał, zapomnij o poprawnym programowaniu OOP.

Jeśli będziesz od razu chciał napisać poprawnie to raczej nigdy nic nie napiszesz bojąc się że kod będzie niepoprawny.

Zacznij pisać cokolwiek i pokazuj swój kod na forach, nie przejmuj się hejterami, zazwyczaj są to ludzie, którzy nie mają pojęcia o programowaniu, skupiaj się tylko na konstruktywnej krytyce, ciekawych linkach do przeczytania i tak dalej ...

Stawiaj sobie proste zadania, np. własne smarty, system komentarzy, forum dyskusyjne, i inne prościutkie projekty, to ma być proste kilkadziesiąt linijek obiektowego kodu.

Napisz kod pochwal się na forum, nie bój się chwalić kodem to podstawa do samodoskonalenia.


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
valvadis
post 5.06.2016, 21:18:42
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


Jeśli chcesz dobrze zrozumieć jak działa OOP w praktyce to spróbuj zrozumieć ideę frameworków, wrzucam link do artykułu, w którym autor próbuje stworzyć coś od podstaw. Myślę, że na tym przykładzie świetnie widać jak działa OOP i frameworki oparte na wzorcu MVC (absolutna podstawa jeśli chodzi o tworzenie aplikacji webowych).

http://lukasz-socha.pl/php/mvc-w-praktyce-...artykulow-cz-1/
Go to the top of the page
+Quote Post
com
post 5.06.2016, 23:10:43
Post #4





Grupa: Zarejestrowani
Postów: 3 032
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Pierwsze podstawowe pytanie to co już potrafię?

Obecnie modne jest tworzyć separację miedzy modelem, widokiem oraz kontrolerem i na tej idei bazują wszystkie sensowne frameworki, dlatego dużo osób je poleca, ale framework to nie tylko mvc, w tych większych jak np. Symfony, jest wiele innych zasad, które powinno się znać i stosować. Ale tak naprawdę OOP to wcale nie MVC, bo to jest wzorzec architektoniczny, który można zaimplementować, ale nie trzeba, ostatnio trend zmierza trochę w innym kierunku a mianowicie nastawienie na zrozumienie domeny, czyli w kierunku DDD, oraz przykładowo hexagonal architecture.

Moim zdaniem najlepiej uczyć się na jakimś prawdziwym problemie, najważniejsze jest jednak aby zacząć, pisać, bo dziś kiedy zapytam się Ciebie czym możesz się pochwalić, co stworzyłeś co odpowiesz? (Chodzi mi oczywiście w kontekście OOP). Tak jak kolega powiedział, wybierz sobie jakiś przykład który Cie interesuje i spróbuj go zaimplementować, w razie problemów przychodzisz do nas, my chętnie pomożemy jak ktoś chce z nami współpracować. I nie bać się jak ktoś skrytykuje nasz kod, bo on krytykuje implementacje, nie nas samych, dużo osób odbiera to zbyt personalnie.

Mówisz, że masz książkę do C++, prawda jest taka, że jak pojmiesz OOP w jednym języku to, przeniesienie go na inny wymagać będzie tylko zmiany nazewnictwa które obowiązuje w danej implementacji języka, oczywiście jeśli znasz trochę C++, to poznanie tam OOp będzie fajnym doświadczeniem i dobra baza, ale może być tez odwrotnie, zacząć od PHP, co wybierzesz zależy od Ciebie.

Pytałeś czy można napisać stronę bez frameworka, oczywiście że można, ostatnio w ramach projektów open source rozwijany jest serwis ecommerce, https://github.com/dumplie/dumplie, do którego, każdy kto ma chęć i ochotę może dorzucić własną cegiełkę(uprzedzając nie jest to reklama broń boże), jest to po prostu fajny przykład tego, że nasze polskie community, jest już na tyle rozwinięte, że potrafi też samemu coś zdziałać. Projekt jest o tyle ciekawy, że został oparty o architekturę warstwową, a do tego nie jest zależny od konkretnej implementacji narzucanej przez framework. Przykład warty przejrzenia/śledzenia bo projekt cały czas się rozwija. Podobny https://github.com/norzechowicz/mydrinks i prezentacja https://vimeo.com/154094215 z zeszłorocznego PHPCon wink.gif Warto iść z duchem czasu i uczyć się już na dobrych przykładach, a nie powtarzać stare nie do końca dobre schematy smile.gif
Go to the top of the page
+Quote Post
deha21
post 6.06.2016, 09:56:06
Post #5





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

Ostrzeżenie: (0%)
-----


Też mam problem z OOP. Strukturalnie piszę wszystko i idzie całkiem sprawnie, ale do OPP nie umiem się przekonać. Próbowałem też sie uczyć, ale jakoś to do mnie nie dociera. Ideę rozumiem, natomiast nie umiem tego jakoś w praktyce zastosować. Dużą część przykładów w OOP, moim zdaniem, zrobiłem by szybciej i sprawniej strukturalnie tongue.gif


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 6.06.2016, 10:01:21
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Co nie oznacza że potem łatwiej się z tym pracuje wink.gif
Go to the top of the page
+Quote Post
deha21
post 6.06.2016, 10:03:54
Post #7





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 6.06.2016, 11:01:21 ) *
Co nie oznacza że potem łatwiej się z tym pracuje wink.gif

Funkcje i programowanie strukturalne i dla mnie jest wszystko czego potrzeba. Natomiast problem jest taki, że jeśli chciałbym się zatrudnić w firmie to w znacznej większości wymagają OOP sad.gif


--------------------
Go to the top of the page
+Quote Post
kapslokk
post 6.06.2016, 10:16:29
Post #8





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
Funkcje i programowanie strukturalne i dla mnie jest wszystko czego potrzeba.

Tak Ci się tylko wydaje biggrin.gif

Tak szczerze mówiąc, to ja zaczaiłem OOP jak budowałem sterownik do terrariów dla moich pająków wink.gif Dwa terraria, w nich czujniki, oświetlenie, grzałki. Dla każdego z tych urządzeń klasa, do obiektów reprezentujących terraria wstrzykiwałem poszczególne urządzenia smile.gif Jak masz chwile czasu to w sumie polecam smile.gif
Go to the top of the page
+Quote Post
!*!
post 6.06.2016, 12:16:37
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


http://phpedia.pl/wiki/Kategoria:OOP
http://phpedia.pl/wiki/Klasa
http://phpedia.pl/wiki/Obiekt
http://phpedia.pl/wiki/Model_View_Controller
http://phpedia.pl/wiki/Dziedziczenie

Pomiń tylko przykłady dla PHP4 a będzie dobrze ;) uh te aktualizacje na wiki :D


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Tomplus
post 6.06.2016, 16:22:19
Post #10





Grupa: Zarejestrowani
Postów: 1 829
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


@deha21
Nie ucz się OOP na siłę. Stwórz sobie cel i zastosuj w praktyce, np. zamieniając jakąś funkcję na obiekt. Zacznij od małych funkcji np. stworzyć obiekt który oblicza pole powierzchni, albo cokolwiek co masz.

Ja kiedyś uważałem tak samo jak Ty, po co mi obiektowość kodu, skoro strukturalny kod spokojnie wystarcza, teraz okazuje się że męczę się z projektami które napisałem strukturalnie, albo ktoś inny napisał i mi zostawił w spadku jako administrator.

Dodatkowo jest taka piękna rzecz jak autoloader, gdzie można załadować klasę taką którą potrzebujesz w konkretnym miejscu kodu projektu.

I warto analizować klasy najlepiej takie które zachowują czystość kodu np. użyteczna klasa PHPAuth [https://github.com/PHPAuth/PHPAuth]
Go to the top of the page
+Quote Post
zegarek84
post 6.06.2016, 21:12:51
Post #11





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


jak przeczytałem pierwszy post i ogólnie temat to Tobie nie chodzi o OOP tylko o programowanie obiektowe, OOP to już wyższy poziom myślenia gdyż to programowanie zorientowane obiektowo - a to nie to samo... OOP (object oriented programming)... jeśli odpowiednio będziesz korzystał z obiektów to i kod strukturalny gdzie operujesz na "żywych" obiektach będzie programowaniem obiektowym... jeśli piszesz np. w JS to tam stale musisz operować na obiektach gdyż wszystko jest tam obiektem zwłaszcza operując na DOM... class'a jest tylko stęplem/wzorcem cegiełki, a każda cegiełka/leming (itd) może być wadliwy/unikalny itd... jeśli będziesz miał większy kod i kilka podobnych elementów to siłą rzeczy będziesz chciał go podzielić na podobne fragmenty (zazwyczaj obiekty) - więc po prostu trzeba pisać...

programowanie zorientowane obiektowo można przyrównać np. gdy aplikacja jest bardziej skomplikowana i w pewnych miejscach/węzłach możesz różnie zadecydować oczywiście np. wykorzystując już pewne istniejące informacje (czy coś - obiekty) - można to trochę przyrównać do drzewa gdzie potem są gałęzie, a każda gałąź może mieć więcej gałęzi/gałązek... nie każda gałąź musi mieć liście, niektóre mogą mieć owoce (np. jabłka), można iść dalej i drzewo może mieć owoce o różnych smakach (jest coś takiego jak "szczepienie" odmian), po prostu do-szczepiona inna gałązka... i teraz zależy którędy mrówka obierze drogę ten owoc dorwie ;] - w sumie to opisałem jak też działa większość aplikacji internetowych zorientowanych obiektowo ;p ...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 06:31