Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Początki z obiektowym PHP
marcinpruciak
post
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Dopiero zacząłem przygodę z obiektowym PHP. Uczyłem się z książki 'Zaawansowane tworzenie stron www PHP5 Szybki start'.

Udało mi się wykombinować taki kod:

http://www.wklej.com.pl/show.php?what=20080812201428

Ma to służyć jako miniCMS, to są klasy do zarządzania podstronami.

Chciałbym się zapytać czy to jest wogóle obiektowo, bo mi się wydaje że to są zwykłe funkcje pogrupowane w klasy. 

Nie wiem czy rozumiem ideę obiektowego programowania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
qBK
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.01.2007
Skąd: Wrocław

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


W sumie nie wiem czy rozpoczęcie nauki programowania obiektowego od PHP to najlepsze rozwiązanie. Ja OOP nauczyłem się na C++ i Tobie też to polecam, chociaż na początku może być trudno, ale nie ma nic za darmo (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Poza tym C++ to kanon, który co prawda bywa czasem trochę upierdliwy, bo wszystko musi się zgadzać i jest mniej elastyczne niż nowsze języki, ale to uczy porządnego programowania.
Bazując na swoim przykładzie, polecam naukę podstaw C++, potem wskaźników i wtedy programowanie obiektowe w C++.

Jeszcze odnośnie Twojego kodu, to zrobiłeś zbiór funkcji, jak poprzednicy pisali; klasy charakteryzują się tym, że obiekty z nich utworzone posiadają 1) zmienne i 2) metody (funkcje) i jedno i drugie jest w równym stopniu ważne, więc tworzenie klas tylko ze zmiennymi albo tylko z funkcjami niewiele nam daje, dopiero połączenie obu pozwala wykorzystać masę funkcjonalności.

Tworzysz klasę i później możesz stworzyć wiele obiektów, które są niezależne od siebie, mają inne dane (zmienne), ale korzystają z tych samych metod.

Trywialny przykład:
  1. <?php
  2. class Prostokat
  3. {
  4. var $szerokosc;
  5. var $wysokosc;
  6.  
  7. public function pole()
  8. {
  9. return $this->szerokosc * $this->wysokosc;
  10. }
  11. }
  12.  
  13. $p1 = new Prostokat;
  14. $p1->szerokosc = 20;
  15. $p1->wysokosc = 10;
  16. echo $p1->pole(); //200
  17.  
  18. $p2 = new Prostokat;
  19. $p2->szerokosc = 65;
  20. $p2->wysokosc = 2;
  21. echo $p2->pole(); // 130
  22. ?>


Coś bardziej zbliżonego do Twojego kodu - obiekt 'Tabela':
  1. <?php
  2. class Tabela
  3. {
  4. var $dane;
  5.  
  6. public function __construct()
  7. {
  8. $this->dane = array();
  9. }
  10. public function addRow($text)
  11. {
  12. $this->dane[] = $text;
  13. }
  14. public function display()
  15. {
  16. echo '<table>';
  17. foreach($this->dane as $row)
  18. {
  19. echo '<tr><td>'.$row.'</td></tr>';
  20. }
  21. echo '</table>';
  22. }
  23. }
  24.  
  25. $produkty = new Tabela;
  26. $produkty->addRow('margaryna');
  27. $produkty->addRow('masło');
  28. $produkty->addRow('chleb');
  29. $produkty->display();
  30. ?>

Oczywiście to też przykład trywialny, jedynie obudowanie zwykłego arraya, ale niewiele zmieniając można już poprawić trochę jakość zwyczajnej tablicy, np. walidować dane wejściowe, czyli w funkcji addRow sprawdzać czy $text jest taki jak nam odpowiada, czy nie jest za długi etc. etc.
Go to the top of the page
+Quote Post

Posty w temacie
- marcinpruciak   Początki z obiektowym PHP   12.08.2008, 19:19:44
- - wlamywacz   Niestety jest to tylko kod strukturalny zamknięty ...   12.08.2008, 20:00:31
- - dyniaq   No trochę lipa. Utwórz np klasę podstrona i w niej...   12.08.2008, 20:01:30
- - marcinpruciak   Zmieniłem to w jedną klasę podstrony.  Nie widzę ...   12.08.2008, 21:00:43
- - ayeo   Tak jak ktoś wyżej napisał, myślisz funkcjonalnie....   12.08.2008, 21:40:53
- - Cysiaczek   Nie, niestety nie chodzi o to. Przynajmniej nie wp...   12.08.2008, 22:05:48
- - qBK   W sumie nie wiem czy rozpoczęcie nauki programowan...   13.08.2008, 07:35:21
- - Crozin   @qBK w PHP5 nie ma var, jest private, protected, p...   13.08.2008, 13:40:46
|- - qBK   Cytat(Crozin @ 13.08.2008, 14:40:46 )...   13.08.2008, 19:49:27
- - marcinpruciak   Pomęczyłem się pół dnia i trochę już łapię. Zrobił...   13.08.2008, 15:37:19
- - Shili   Jak już się uczysz, to nabieraj od podst...   13.08.2008, 15:48:28
- - Crozin   Nie private var $abc, a private $abc   13.08.2008, 23:13:02
- - marcinpruciak   Trochę pomyślałem, pokombinowa...   22.08.2008, 11:32:37
- - Kicok   CytatNieźle jak na pierwszy kontakt z obiektowości...   22.08.2008, 13:32:04
- - f1xer   Abstrahując od twojego problemu, jeżeli ...   22.08.2008, 14:13:25
- - marcinpruciak   Tylko jak poradzić sobie z pętlą? Wszystkie przykł...   22.08.2008, 17:01:16
- - f1xer   jeżeli masz jusz dane w tablicy to tą ta...   22.08.2008, 17:26:53
- - marcinpruciak   Zedytowałem to tak: [PHP] pobierz, plaintext...   22.08.2008, 23:47:21
- - kbsucha   Zobacz w manualu opis funkcji mysql_fetch_assoc(),...   23.08.2008, 00:19:14
- - marcinpruciak   Udało się. Dzięki za sugestię....   28.08.2008, 22:44:36
- - Cysiaczek   Dla każdej strony robisz osobny obiekt? Moim ...   29.08.2008, 08:35:55
- - marcinpruciak   <P>Tylko że ja już mam książkę. "Zaawan...   29.08.2008, 10:47:40
- - wlamywacz   Musisz potraktować taką klasę jako obiekt a nie ty...   29.08.2008, 11:21:51
- - -=Peter=-   jak klase można potraktować jako obiekt? Klasa i o...   30.08.2008, 22:37:44
- - wlamywacz   Tak jest to łatwiej zrozumieć początkującym   31.08.2008, 10:56:43
- - marcinpruciak   A co powiecie na to? : [PHP] pobierz, plaintext ...   31.08.2008, 13:57:27
- - wrzasq   jesli chodzi o samo pojecie obiektowosci to juz le...   31.08.2008, 14:39:15
- - marcinpruciak   Czemu sądzisz że to dopiero zalą...   31.08.2008, 16:50:06
- - Crozin   Każdy formularz na stronie może być obiektem, ale ...   31.08.2008, 17:52:11
- - marcinpruciak   No tak, wiem o tym, ale ja robiłem klas...   31.08.2008, 18:26:57
- - wrzasq   powiem tak - do PHP nie warto inwestowac w ksiazki...   31.08.2008, 20:06:28
- - Fixus   co do tytułu "PHP5: Zaawansowane progra...   31.08.2008, 20:12:54
- - Crozin   Input dziedziczący po Form? Jakoś mi się to nie wi...   31.08.2008, 21:41:30
- - Fixus   @Crozin - może faktycznie mnie poniosło z tym dzie...   31.08.2008, 21:48:46
- - marcinpruciak   Kod po poprawkach, zrobiłem jedną klasę z danymi, ...   12.09.2008, 22:33:34
- - Crozin   1) HTML_Element powinno być klasą abstrakcyjną i j...   13.09.2008, 07:49:31
- - marcinpruciak   [PHP] pobierz, plaintext <?php abstract cl...   14.09.2008, 16:56:55
- - marcio   W jakim sensie sam sie ucze ale ja bym to dal do i...   14.09.2008, 19:30:22
- - Shili   Ja mam parę uwag: W konstruktorach masz stan...   14.09.2008, 20:01:22


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: 13.10.2025 - 01:07