Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] OOP - początki..
adam83
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 2.11.2009

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


Witam,

Od pewnego czasu zacząłem przyswajać sobie podstawy programowania obiektowego w PHP, wcześniej miałem z tym troszkę wspólnego bawiąc się na uczelni w C# i VB. Przeczytałem wiele artykułów, pomocy itp wszędzie tam pięknie opisują metody,klasy,obiekty, dziedziczenie itp...
Potrzebuje chociażby najprostszej aplikacji napisanej obiektowo, nigdzie nie mogę czegoś takiego znaleść. Chciałbym zobaczyć jak w praktyce wygląda taki kod bo szczerze mówiąc nie mam zielonego pojęcia jak to wszystko złożyć do kupy.. Nie myśle jeszcze obiektowo:)
Mogę liczyć na podesłanie czegoś do rozkminki, ewentualnie podanie namiaru na jaką małą aplikację, stronkę napisaną w całości w OOP PHP, tak abym zobaczył jak to się w praktyce robi?

Z góry dziękuje,
Pozdrawiam

Ten post edytował adam83 31.01.2010, 10:15:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Ellington
post
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


http://www.phpclasses.org/

Sciagasz dowolna klase, otwierasz sobie plik z przykladem wykorzystania i to raczej wszystko. Reszty dowiesz sie z kursow.
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  1. class Dom {
  2. private Drzwi;
  3. private Okno;
  4.  
  5. public function __construct(Drzwi $drzwi, Okno $okno) {
  6. $this->Drzwi = $drzwi;
  7. $this->Okno = $okno;
  8. }
  9.  
  10. public function otworzOkno() {
  11. $this->Okno->otworz();
  12. }
  13.  
  14. }
  15.  
  16. class Drzwi {
  17. public function __construct() {}
  18.  
  19. }
  20.  
  21. class Okno {
  22. public $stan;
  23.  
  24. public function __construct() {
  25. $this->stan = 'zamkniete';
  26. }
  27.  
  28. public function otworz() {
  29. $this->stan = 'otwarte';
  30. }
  31.  
  32. }
  33.  
  34. $okno = new Okno;
  35. $drzwi = new Drzwi;
  36.  
  37. $MojDom = new Dom($drzwi , $okno);
  38. $MojDom->Okno->otworz(); // stan okna: otwarte


Pytaj, czego nie rozumiesz, bo skoro miałeś na uczelni C# i ogólnie znasz teorię OOP, to nie rozumiem, w czym problem.

Go to the top of the page
+Quote Post
adam83
post
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 2.11.2009

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


dziękuje Wam za pomoc.

Składnię, definiowanie klas, metod itp rozumiem..
Nie mam zielonego pojęcia jak można np. napisac skrypt wyświetlający komentarze obiektowo.. robiłem to na sto sposobów proceduralnie, ale brakuje mi zmysłu obiektowego, nie wiem jak to zastosować.. w tym tkwi problem:)
Go to the top of the page
+Quote Post
blooregard
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Tworzysz klasę 'komentarz'.
W tej klasie definiujesz metody: pobierające komentarze, wyświetlające je, dodawanie nowego komentarza itp. (analogicznie, jak f-cje proceduralnie).

Następnie tworzysz obiekt klasy 'komentarz':
  1. $komentarz = new Komentarz();


wyświetlenie komentarzy:
  1. $komentarz->pokazKometarze(); //wywolujesz zdefiniowana w klasie metode pokarzKomentarze()


dodawanie komentarza:
  1. $komentarz->dodajKomentarz($tresc); //analogicznie do wywolania proceduralnego dodajKomentarz($tresc)


pobranie komentarza o zadanym ID:
  1. $komentarz->pobierzKomentarz($id);


przykladowa implementacja takiej klasy:
  1. class Kometarz {
  2. private $id; //id komentarza
  3.  
  4. public function __construct() {};
  5.  
  6. public function pokazKomentarze() {
  7. $query = "SELECT * FROM komentarze";
  8. .... //tu przetwarzasz zapytanie i zapisujesz zwrocone rezultaty do tablicy $komentarze;
  9. return $komentarze;
  10. }
  11.  
  12. public function pobierzKometarz($id = false) {
  13. if ($id)
  14. $this->id = $id; //przypisujesz skladowej $id klasy ID zadanego komentarza, to pozwoli Ci na odwolywanie sie w metodach klasy do tego konkretnego komentarza, chyba, ze $id jest puste, wtedy od razu uzywasz skladowej klasy, ustawionej w jakiejs innej metodzie
  15. $query = "SELECT * FROM komentarze WHERE komentarz_id = '".$this->id."' ";
  16. ... //przetwarzasz zapytanie
  17. return $komentarz; //zwracasz wynik
  18. }
  19.  
  20. public function dodajKomentarz($tresc) {
  21. $query = "INSERT INTO komentarze SET tresc = "'.$tresc.'" ";
  22. ... //przetwarzasz
  23. $this->id = @mysql_insert_id(); //od razu przypisujesz sobie D dodanego komentarza, co pozwoli Ci go natychmiast zwrocic metoda pobierzKomentarz();
  24. }
  25.  
  26. }


przykładowe zastosowanie:
  1. $komentarz = new Komentarz();
  2.  
  3. //jesli np. ktos dodal komentarz, zapisujesz go:
  4. if ($_POST['dodaj'] != '') {
  5. ...obsluga danych z POST, w tym np. $tresc = trim(strip_tags($_POST['tresc']));
  6. $komentarz->dodajKomentarz($tresc);
  7. }
  8.  
  9. ...wyswietlasz ostatnio dodany komentarz:
  10. echo '<p>Ostatno dodany komentarz:</p>';
  11. $komentarz->pobierzKomentarz();
  12.  
  13. ...tu wyswietlasz np. tresc newsa, a pod nim wszystkie komentarze:
  14. $komentarz->pokazKomentarze();
  15.  


W rezultacie powinieneś otrzymać np. taki wynik:
Cytat
Ostatnio dodany komentarz:

| No naprawdę? - user1 | // rezultat wykonania $komentarze->pobierzKomentarz()

News
I stało się. Nasz serwis podaje to jako pierwszy na świecie (IMG:style_emoticons/default/exclamation.gif) !

Komentarze:
| O, kurczę - userABC | //rezultat wykonania $komentarze->pokazKomentarze()

| Ja cię... - user123 |

| No nie wierzę... - userXYZ |


Kumasz? (IMG:style_emoticons/default/smile.gif)

Moze jeszcze to Ci pomoże:
http://rafjan.pl/oop.html

Go to the top of the page
+Quote Post
adam83
post
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 2.11.2009

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


Dziękuje Ci bardzo za wyczerpujący opis, wieczorem spróbuje to zaimplementować i coś dodać.

Jeszcze pytanie z innej beczki, jaką książkę w zakresie OOP polecacie na początek? z tego co widze najpopularniejsze są 3...

Peter Lavin - "PHP programowanie obiektowe"
Hasin Hayder - "Programowanie obiektowe w PHP 5"
i jeszcze jedna Hellionu PHP 5 - "zaawansowane programowanie"

moze ktoś ma w pdfie więcej niz I rozdział każdej?

Ten post edytował adam83 31.01.2010, 12:20:36
Go to the top of the page
+Quote Post
Ellington
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


Cytat
moze ktoś ma w pdfie więcej niz I rozdział każdej?


Chyba na złe forum trafiłeś (IMG:style_emoticons/default/winksmiley.jpg) . Jeżeli szukasz darmowej wiedzy, to rozejrzyj się po kursach w sieci (vide: webhosting.pl). Nie odbiegają one wiele od pozycji książkowych.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:07