Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] OOP - początki..
Forum PHP.pl > Forum > Przedszkole
adam83
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
Ellington
http://www.phpclasses.org/

Sciagasz dowolna klase, otwierasz sobie plik z przykladem wykorzystania i to raczej wszystko. Reszty dowiesz sie z kursow.
blooregard
  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.

adam83
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:)
blooregard
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 exclamation.gif!

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

| Ja cię... - user123 |

| No nie wierzę... - userXYZ |


Kumasz? smile.gif

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

adam83
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?
Ellington
Cytat
moze ktoś ma w pdfie więcej niz I rozdział każdej?


Chyba na złe forum trafiłeś 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.
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.