Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stosowanie class / jak sie tego nauczyc ? :)
Forum PHP.pl > Forum > PHP
bigos1995-95
Witam, jestem początkujący w nauce php. Uczę się z książki Vademecum wydanie IV i doszedłem do tematu z klasami do tego tworzenie własnych funkcji. Siedzę już nad tym może z 4 dni i nie mogę tego pojąć. Może mi ktoś dać jakiś poradnik, filmik cokolwiek co mi przybliży stosowanie class, function i mnie tego jakos nauczy bo nie wiem czy to jest takie trudne czy ja jestem taki tępy smile.gif biggrin.gif
!*!
http://pl.wikibooks.org/wiki/PHP
tehaha
To nie jest temat, który da się streścic w kilku słowach i programowania obiektowego nie ogarniesz w kilka dni, więc nie martw się, nie będzie łatwo ale im dłużej będziesz w tym siedział tym łatwiej potem będzie. Ważne jest aby znaleźć taki kurs/książkę, który będzie dla Ciebie w odpowiednim tempie zwiększał poziom. Wpisz sobie w Google albo na YouTube "php OOP tutorial" i masz tego mnóstwo, wybierz taki, który Ci pasuje. Ponadto, żeby to zrozumieć to musisz sam zacząć pisać, więc musisz postawić sobie serwer na komputerze i zacząć pisać swoje skrypty, bo inaczej tego się nigdy nie nauczysz. W książce powinny być przykładowe kody i ćwiczenia. I jeszcze jedna rada, jeżeli przestałeś nadążać za materiałem w książce to zacznij ją czytać od początku, jak jest dobra książka to warto ją przerobić kilka razy, bo po jednorazowym przeczytaniu nie nauczysz się tego stosować. I na koniec pisać, pisać i jeszcze raz pisać. Pozdro
bigos1995-95
Wiem ,że najważniejsze to się nie poddawać i czytać pisać czytać pisać albo myślę że lepiej bym zrozumiał jakby ktoś mi to wytłumaczył na filmiku na konkretnych przykładach. Nie znacie może jakiegoś dobrego video tutoriala do class?
tehaha
Jedną z niezbędnych umiejętności jakie musisz nabyć, jeżeli chcesz nauczyć się programować to umiejętność wyszukiwania informacji w internecie, nie myśl, że masz pytania i wątpliwości bo jesteś początkujący, nawet jak będziesz w tym siedział kilka lat to i tak będzie cała masa rzeczy, których nie będziesz wiedział i dlatego musisz się nauczyć odpowiadać na postawione przez siebie pytanie. Odpalasz youtube i jak wpiszesz "php oop class" to masz całą masę filmików o tym, czego szukasz, jak wpiesz to samo w Google to znajdziesz pełno kursów i artykułów. Co jak co ale kursów do php w sieci nie brakuje, musisz po prostu przysiąść i to przerobić tutaj nikt nie będzie Ciebie za rączkę prowadził, jak Ci jakiś kurs nie pasuje to sobie znajdujesz inny.

Masz tu kilka linków:
http://www.youtube.com/watch?v=LDgd_gUcqCw...feature=related
http://www.youtube.com/watch?v=0lydYnGLDrs
http://www.youtube.com/watch?v=MCChD2GMBow
http://www.youtube.com/watch?v=Yd3SMOuEwlE
https://www.google.pl/search?q=php+opp+class

Poszukaj w Google i na Youtube, to nie boli smile.gif
!*!
Filmiku? PHP to nie kurs grafiki. Jak nie rozumiesz tego co jest napisane w wikibooks, pomimo że czytałeś to więcej niż raz, to odpuść to sobie na jakiś czas. Przykłady tam opisane są banalne i już wielu się na nich uczyło. Jeśli po jakimś czasie odpoczynku wrócisz i nadal tego nie opanujesz, to może odpuść, bo to nie dla Ciebie.

tehaha - zaraz będzie że to nie po polsku wink.gif
bigos1995-95
Dobra "!*! może i miałeś racje ;D ale uczę się języka angielskiego w szkole prawie 10 lat do tego chodzę na korepetycje, może i umiem dosyć dobrze gramatykę i znam słówka ale co z tego jak nie mam styczności z tym językiem w prawdziwym świecie i ciężko jest mi zrozumieć typowego anglika. "tehaha" a co do tych filmików to polowe z nich już widziałem albo chodzilo mi bardziej o cos trwającego z 2h po polsku. Ale dobra chyba sobie odpuszczę te filmiki tylko zacznę od początku działu class i będę wszystko testował na własnym hostingu to może jakoś sobie wbije do głowy te klasy.A co do samego języka do nauka go po kilka godzin co dziennie jest naprawdę męczące i po jakimś czasie się nie chce lecz po jakimś czasie chęci powracają. A co sądzicie o sposobie uczenia się języka ? Ja myślałem żeby przerobić cała książkę "tak z grubsza", poznać możliwości jezyka i dopiero wtedy zaczynać tworzyć jakieś własne projekty.
Mephistofeles
Tu nie ma co pisać i testować, najpierw trzeba zrozumieć koncepcję. Nie rozumiesz podstaw programowania obiektowego czy OOP w wykonaniu PHP?
tehaha
Bez angielskiego w programowaniu to jak bez nogi, daleko nie zajdziesz, niestety ale większość materiałów, dokumentacji, wsparcia na forach jest po angielsku więc angielski to podstawa, książek też jest o wiele więcej i są dużo lepiej napisane, bo niestety wiele słów technicznych nie ma swoich odpowiedników w języku polskim, więc te tłumaczone często ciężej się czyta niż oryginały. Takich filmów po polsku raczej nie znajdziesz, więc możesz porzucić nadzieję.

Nauka programowania na początku jest ciężka i bardzo frustrująca, ale jak przebrniesz przez początek to potem jest z górki.

Cytat
Ja myślałem żeby przerobić cała książkę "tak z grubsza", poznać możliwości jezyka i dopiero wtedy zaczynać tworzyć jakieś własne projekty.
Tak się nie nauczysz, ja polecam przepisywanie wszystkich przykładów ręcznie, odpalanie i "pobawienie się z nimi". I pamiętaj z książkami do programowania nie jest tak jak ze zwykłymi, to nie jest tak, że raz przeczytasz i umiesz, najlepiej zawsze jak się pogubisz to zaczynaj od początku książki, dobrze to robi zwłaszcza na początku. Tu nie ma czegoś takiego, że "z grubsza" wiesz o co chodzi. Ja wiele trudniejszych książek przerabiałem po 3-4 razy i nadal do nie których działów wracam, żeby sobie przypomnieć.

Pamiętaj też, że Google to Twoja prawa ręka, on odpowiednio zapytany odpowie na każde pytanie, jak wywali Ci parser jakiś błąd to go wklejasz w Google i masz rozwiązanie.

Cytat
tehaha - zaraz będzie że to nie po polsku wink.gif
hehe jasnowidz jaki czy co..tongue.gif
bigos1995-95
Można powiedzieć że tak w połowie. Definicje wszystkich funkcji znam ale co dalej to nie wiem.
np taki kod.

  1. class nazwaklasy
  2. {
  3. public $atrybut;
  4. function operacja($param)
  5. {
  6. $this->$atrubyt = $param
  7. echo $this->$atrybut;
  8. }
  9. }


i co to ma robić jakie to ma później zastosowanie nie wiem.
wiem ze dzieki $this-> dostajemy sie do zmiennej
za pomoca slowa function tworzymy nowa funkcje
a co ta klasa ma robic to nie wiem
Niktoś
Cytat
Tu nie ma co pisać i testować, najpierw trzeba zrozumieć koncepcję.

Ja jestem chyba innego zdania.Trzeba dużo ćwiczyć, aby "ogarnąć" np.typy klas np.static,protected,public ,sealed itp., i wiedzieć miej/więcej jak takie klasy się zachowują. Trzeba testować, testować i jeszcze raz testować i wyciągać wnioski.

Cytat
Siedzę już nad tym może z 4 dni i nie mogę tego pojąć. Może mi ktoś dać jakiś poradnik, filmik cokolwiek co mi przybliży stosowanie class, function i mnie tego jakos nauczy bo nie wiem czy to jest takie trudne czy ja jestem taki tępy

Tępy nie jesteś, to jest najtrudniejsza część programowania-tworzenie klas w oparciu o jakieś wzorce projektowe i wykorzystywanie ich w swoim projekcie.
To nie jest materiał na 4 dni, a na miesiące lub lata ,by móc się tym w pełni sprawnie posługiwać.
bigos1995-95
A zreszto dobra moze jakos sobie poradze, potestuje i moze cos wyjdzie ale to juz nie dzisiaj.
!*!
Cytat(bigos1995-95 @ 18.06.2012, 00:18:48 ) *
  1. class nazwaklasy
  2. {
  3. public $atrybut;
  4. function operacja($param)
  5. {
  6. $this->$atrubyt = $param
  7. echo $this->$atrybut;
  8. }
  9. }


i co to ma robić jakie to ma później zastosowanie nie wiem.
wiem ze dzieki $this-> dostajemy sie do zmiennej
za pomoca slowa function tworzymy nowa funkcje
a co ta klasa ma robic to nie wiem


Piszesz klasę i nie wiesz co ma robić? Co chcesz. Zacznijmy od tego że nie piszemy echo w metodach(funkcjach) klasy, chyba że dla testu, w innym przypadku zapomnij o tym. Metody do jakiś się odwołujesz, mają zwracać dane, a nie je wyświetlać.
A klasa wyżej zwraca parametr metody jaki podałeś, nic więcej.
Mephistofeles
Nie dziwię się, że nie rozumiesz co to ma robić, bo taka klasa nie ma żadnego sensu. Lepiej uczyć się na realnych przykładach:
  1. class Produkt
  2. {
  3. private $cena;
  4.  
  5. public function ustawCene($cena)
  6. {
  7. $this->cena = $cena;
  8. }
  9.  
  10. public function wyswietlCene()
  11. {
  12. echo $this->cena;
  13. }
  14. }


Cytat(!*!)
Zacznijmy od tego że nie piszemy echo w metodach(funkcjach) klasy, chyba że dla testu, w innym przypadku zapomnij o tym. Metody do jakiś się odwołujesz, mają zwracać dane, a nie je wyświetlać.

To takie szkolne uproszczenie. Klasy mogą używać dowolnych funkcji, ważne jest żeby robiły tylko to, do czego są przeznaczone. Przykładowo klasa Template może mieć metodę render, w której wystąpi echo i nic złego się nie stanie, albo bardziej abstrakcyjnie klasa Response z metodą send. Natomiast zastosowanie echo w klasie do obsługi bazy będzie już błędem projektowym.
Dipter
@Mephistofeles
Z jednej strony masz racje, ale z drugiej jeśli ktoś zawartość "renderowanego" szablonu będzie chciał wkleić do jakiegoś innego, albo chociażby próbował połączyć go z innym (prosty przykład - dołączyć go jako ciąg do zmiennej). Przy wywołaniu echo w klasie wszystko się posypie, dlatego lepiej wszystko zwracać, a dopiero na zewnątrz to w dany sposób wyświetlić/przesłać (bo niby dlaczego by nie wykorzystać szablonów do wysyłania maila? Wtedy cała klasa jest na nic).
Mephistofeles
@Dipter:
Owszem, to był prosty przykład, czasami więcej nie potrzeba, dlatego napisałem, że w bardziej abstrakcyjnym systemie tym zajmie się np. obiekt klasy Response.
bigos1995-95
Skończy się ten tydzień będę miał wolne od szkoły to się do tego przyłożę bo jak na teraz to nic was prawie nie rozumiem i brak czasu żeby cokolwiek pojąć
lukaskolista
To moze teraz ja sprobuje opisac to w prosty sposob. Zakladam, ze programowac strukturalnie potrafisz. Teraz do rzeczy:

Obiekt - jest to swojego rodzaju unikalny byt, generalnie slowo "obiekt" moze opisywac cokolwiek, obiektem moze byc uzytkownik, polaczenie z baza danych,... doslownie wszystko.

Klasa - klasa to wzor obiektu. W klasie opisujesz cechy obiektu i jego zachowanie w poszczegolnych sytuacjach. Sama klasa nie jest obiektem, obiekt tworzy sie na podstawie klasy. Z zalozenia kazdy obiekt powinien byc inny - nie ma sensu tworzyc 2 takich samych obiektow, np. 2 polaczen z ta sama baza majacych te same parametry.

Wlasciwosc - wlasciwosc to cecha obiektu (zaimplementowana w klasie). Przykladowo wlasciwoscia moze byc nazwa uzytkownika - 2 roznie obiekty uzytkownikow beda mialy inne wartosci wlasciwosci "name" (bo 2 rozni uzytkownicy maja 2 rozne loginy). Wlaciwosc ma za zadanie opisac obiekt.

Metoda - metoda to tak na prawde funkcja operujaca na obiekcie (i nie tylko, bo sa metody statyczne, ale to zostawmy na razie). Metoda ma za zadanie wykonac operacje na obiekcie. Przykladowo metoda "logout" wywolana na obiekcie uzytkownika po prostu tego uzytkownika wyloguje.

To najprostszy opis obiektowosci, jaki przyszedl mi do glowy. Teraz przyklad:
  1. class User // Klasa uzytkownika, czyli taki "wzor obiektu"
  2. {
  3. private $_name; // Wlasciwosc (cecha) okreslajaca uzytkownika. Wazne jest, ze ta wlasciwosc nie jest widoczna poza obiektem, poniewaz jest prywatna
  4.  
  5. // Konstruktor moze byc tez prywatny, ale o tym kiedys
  6. public function __construct($name) // Konstruktor (metoda magiczna) - metoda, ktora jest wywolywana podczas tworzenia obiektu new User('name') - wartosc 'name' bedzie pod argumentem $name konstruktora
  7. {
  8. $this->_name = $name;
  9. }
  10.  
  11. public function logout() // metoda (operacja) wologowania
  12. {
  13. $this->_name = null; // "reset" wartosci wlasciwosci $_name
  14. }
  15.  
  16. }
  17.  
  18. $user = new User('lukaskolista'); // Tworzenie obiektu uzytkownika (juz konkretnego)
  19. $user->logout(); // Wylogowanie uzytkownika
bigos1995-95
Dzieki, troche bardziej mi to przybliżyłeś ale i tak musze sam troche nad tym posiedziec zeby to zrozumiec a wrazie jakis problemow bede pisal
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.