![]() |
![]() ![]() |
![]() |
-Gość_Suchy- |
![]()
Post
#1
|
Goście ![]() |
Witam. Po pierwsze przepraszam za brak tagu w topicu. Nie napsiałe mbo eni wie mgdzie to włożyć. Mam problem. Nie umiem nauczyć sie klasi obiektów. W ogule nie wiem po coto jest i zczym t osięje. Podstawy php znam ,ale z tym mam ogromny problem:/ gdyby ktoś mołg i zechiał , drodzy forumowicze, podzielić sięswojąwiedzą na ten temat byłby mwdzieczny.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 181 Pomógł: 0 Dołączył: 12.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pierwszy lepszy tutek o tym mówi.
http://www.ygreg.com/pokaz.php/klasy http://moj.one.pl/php/language.oop.html weź się w garść bo to nic tródnego. -------------------- Robie to co lubie, lubie to co Robie
|
|
|
![]()
Post
#3
|
|
![]() Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Radze zagladnac do wortalu oraz phpedi...
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Według mnie, to te kursy co zaproponowaliście są troche stare, odnoszą się do PHP4, a idea programowania obiektowego troche odbiega od tego, dopiero w PHP5 wprowadzono wszelkie udogodniania, które wyrażają OOP tak jak należy (Hermetyzacja itp.) Polecam książkę PHP5 Zaawansowane programowanie z helionu. Ale tak jak napisałem to tylko moja opinia. Pozdrawiam
Ten post edytował envp 19.04.2006, 23:10:41 |
|
|
-Gość_Suchy- |
![]()
Post
#5
|
Goście ![]() |
a do czego stosuje się klasy i obiekty?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Hm, założenie programowania obiektowego polega na tym, ze wszystko tratkujesz jako obiekt i kod jest bardziej przejzysty, oraz daje sie wykorzystac wiele razy. Wyobraz sobie ze masz klase czworokat(klasa to jak gdyby zbior obiektow - wszystkie obiekty ktore dadza sie dana klasa opisac tworzą ją) klasa ta ma wlasciwosc: dlugosc przeciwleglych_bokow.
Dodajesz do niej metode (getArea() - czyli oblicz pole) i teraz jak chcesz obliczyc pole to tworzysz sobie obiekt : $prostokat = new czworokat(3,2); mozesz takze obliczyc pole kwadratu - jesli podasz dlugosci bokow przeciwleglych takie same. Nastepna sprawa to dziedziczenie - jesli jeden obiekt dziedziczy cech oraz metody po innym... Np. masz klase wielokat i w tej klasie podklasy kwadrat, szesciokat, itd... wszystkie dziedzicza dlugosc bokow po swojej klasie rodzicu ... noi bardzo przydatna rzecz interfejs (jesli masz obiekt sloik oraz obiekt drzwi - to obydwa da sie otworzyc ale nie maja ze soba nic wspolnego oprocz tej akcji - wiec sa to odzielne klasy ze wspolnym interfejsem ![]() To tak baaardzo w skrocie... naprawde polecam tą książkę z Helionu, bo programowanie obiektowe jest fajne... |
|
|
-Gość_Suchy- |
![]()
Post
#7
|
Goście ![]() |
okej to wyjaśniłeś mi jak sie to robi ale dalej nei wiem gdzie t oma zastosowanie.. tzn wiem po co sąfukncje - zeby wykonywaćko dgdzie tylko chcemy i ile razy chcemy, ale dalej nie wie mp oco obiekty ;]
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
To ja się podepnę do tematu
![]() W ostatnim moim projekcie szeroko używałem (a właściwe w całym) klas - i to jest to czego mi brakowało. Teraz jakakolwiek uwaga od klienta o poprawienie czegoś to kwestia paru minut - przerobienie klasy i już, nigdzie nie muszę biegać po plikach i szukać czym zmiana zaskutkuje, jakie zmienne modyfikuje itp. W klasie, ważny jest 'interface' czyli to jak ona komunikuje się ze światem - jeśli coś zmieniasz w 'środku' klasy, a interface pozostawisz nienaruszony (oczywiście nie zawsze tak się da), to 'środowisko zewnętrzne' - inne klasy, z powodzeniem będą mogły w dalszym ciągu komunikowac się z naszą klasą ![]() Do używania klas trzeba się samemu przekonać i 'dojżeć' ![]() -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 530 Pomógł: 0 Dołączył: 15.01.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
popatrz poprostu sobie na bardziej zaawansowane skrypty, jak ADoDB, albo smarty - pewnie nie zrozumiesz, ale zobaczysz, że to ładnie wygląda, chodzi i jest łatwe w użyciu.
Oczywiście php został przystosowany do OOP, więc nie jest stricte obiektowym językiem. Można wszystko napisać również "normalnie", czyli liniowo. Nie ma dużej różnicy, jeśli chodzi o wydajność. Tu chodzi o łatwość w użyciu (szczególnie przy skomplikowanych projektach) Dyskusja o tym co jest lepsze toczy się już długo, ale moim zdaniem tak naprawdę nie ma różnicy. Klasy świadczą o tym, że jesteś już trochę na wyższym poziomie prgoramowania i ogólnie przyjemnie się z nimi pracuje, choć zaprojektowanie ich czasem bywa kłopotliwe. Początkujący powinni pisać liniowo, aby poznać podstawy. Średnio-zaawansowani powinni uczyć się klas... Cały wątek bardzo dobrze podsumował TomASS: Cytat Do używania klas trzeba się samemu przekonać i 'dojżeć'
Ten post edytował Master Miko 20.04.2006, 16:51:19 -------------------- |
|
|
-Gość_Suchy- |
![]()
Post
#10
|
Goście ![]() |
okej dziekuje za odpowiedzi:) a teraz jeszcze jedno pytanie, które mnie nurtuje- możecie podać przykład prostej, ale przydatnej klasy?
|
|
|
![]()
Post
#11
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
www.phpclasses.com
-------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
www.smarty.php.net
-------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#13
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
![]() Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wystarczy przegladnac odpowiedni dzial forum Algorytmy, klasy, funkcje
|
|
|
-Gość_Suchy- |
![]()
Post
#15
|
Goście ![]() |
okej dziekuje bardzo.. pewnie jakies pytania jeszcze sięnasuną.. ale to chyba dobrtze co nie ?
![]() |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Cytat chyba dobrtze co nie Dobrze ![]() Może na siłę nie skacz na 'obiekty' - to przyjdzie samo - zobaczysz, że zaczyna Ci czegoś brakować, coś można zrobić szybciej, inaczej....samo przyjdzie. Jak napiszesz jakąś klasę (nawet najprostrzą) to wklej ją tutaj a my ją - jak to się mówi - 'przetrzepiemy' ![]() -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 23.08.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No to jeżeli mówimy o początkach w OOP to może i ja sie pochwale pierwszym skryptem
![]() ![]() ![]()
Ten post edytował ens0re 20.04.2006, 21:47:20 -------------------- "Oprócz tabel istnieje jeszcze jedna dalece ograniczająca struktura, składająca się z rzędów i komórek - więzienie. Dla projektantów nadszedł czas, aby sie uwolnić..." - Eric A. Meyer
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Z obiektów to nie jestem jakiś 'wymiatacz', ale napiszę jak mi się wydaje
![]() 1. Po pierwsze primo przydałby się konstruktor. 2. Po drugie primo przydałoby się zmienne var $db_host uczynić prywatnymi' 3. Po trzecie primo chyba nie wszystkie z tych funkcji muszą być 'public' 4. Po czwarte primo ultiom metodę dbClose() przydałoby się wrzucić do destruktora - tak mi się wydaje ![]() ![]() -------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 143 Pomógł: 0 Dołączył: 23.08.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Co do 1 i 2 pkt to wiem, ale jakoś tak napisałem na poczatku i tak zostało - zawsze mozna zmienić. Tylko coś dalej nie kumam 2 i 3pkt. Dlaczego prywatnymi uczynić? I czemu nie powinno być public(a jak inaczej to zrobic)? Dzieki za pomoc
![]() -------------------- "Oprócz tabel istnieje jeszcze jedna dalece ograniczająca struktura, składająca się z rzędów i komórek - więzienie. Dla projektantów nadszedł czas, aby sie uwolnić..." - Eric A. Meyer
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Czy chcesz aby użytkownik klasy miał bezpośredi dostęp do wszystkich zmiennych? Tak nie może być - to się nazywa chyba enkapsulacją danych.
Zrób tak (jeśli tych zmiennych nie ustawisz w konstruktorze):
To zapobiega tworzeniu się błędów np. masz tak:
Lepiej jest dać:
pkt 3. Nie zauważyłem, że metoda dbError() nie jest używana tylko w środku klasy. Wszystkie metody, które używasz w klasie i tylko w niej rób 'private' -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 20:22 |