![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Witam tak jak kiedys napisalem chce sie nauczyc OOP i robie sa prosta ksiege
OTO KOD:
NIe chce zebys ktos z was analizowal kod linijka po linicje po kod dziala lecz tak patrzac na oko czy kod jest zgdony z OOP czyli czy nie jest to tak jak wy to nazywacie pseudo OOP jesli tak to bylbym wdzeczny jak ktos by pokazal jak by to mialo wygladac w czystym OOP nie zeby mi pisal na nowo kod ale zeby pokazal np jak powinna wygldac funkcja add_reply() albo ktora z nich Oprocz tego mam jeszcze kilka pytan bylbym wdzieczny jak by ktos na nie odpowiedzial nie musi odpowiadac na wszystkie 1.DO czego sluzy klasa interface??BO nie zrozumialem 2.Do czego sluzy abstract?? 3.Do czego sluzy static?? I potem mam jeszcze jedno pytanie czytalem kurs na temat OOP Czyli w OOP do obiektow mozna sie odwolywac za pomoca pol i metod jednak gdy zmienne klasowe sa publiczne gdy sa typu private albo protected to tylko za pomoca metod dobrze mowie?? Jednak chcialbym sie zapytac czy ktos z was bedzie tak mily i by mi pokazal roznice pomiedzy odwolywaniem sie do obiektow za pomoca pol i metod ![]() Ten post edytował marcio 8.03.2008, 20:00:57 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 463 Pomógł: 49 Dołączył: 27.12.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
po pierwsze nie umieszczaj kodu html w klasie i wedlug mnie jest to kod strukturalny zamkniety w klasy
Ten post edytował Piniek 8.03.2008, 20:04:05 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
P.S co sie stalo z bbcode'em pierwszy raz mi sie tak dzieje??
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ehh... global..
-------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
To moze ktos pokarze dlaczeg jest to tylko skladnia OOP a pisze strukturalnie bo sam nie wiem tez chce sie nauczyc ze nie rozumiem jeszcze jak pisac w OOP w 100%
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Obejrzyj kod jakiegoś frameworka, albo zobacz, jak wyglądają klasy wygenerowane przez Propel. Obecnie mogę jedeynie powiedzieć, że jeśli ten kod działa poprawnie, to ok, ale z oop nic, ale to zupełnie nic nie ma wspólnego. Proponuję dobrą książkę na początek, bo bez tego ani rusz. Opis tej klasy:
Klasa sprawdza, czy dane są poprawne i usuwa z nich potencjalnie niebezpieczny kod. Łączy się z bazą danych. Może wyświetlić formularz, albo dodać wpis do bazy danych, albo pokazać dodany wpis. Wysyła też cookie, jak już wpis został dokonany. Twoja klasa robi zatem tyle, ile przeciętny framework. Masę zbędnych rzeczy, które nijak nie są związane z meritum sprawy, czyli wpisem do księgi Poniżej klasa księgi gości wg. Propel (3 minuty pracy) http://rafb.net/p/6itcTx76.html
To wszystko. Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
o0..trudne to jest wiesz mysle ze odrazu nie napisze skryptu w OOP ale bylbym wdzieczny jakbys ty lub ktos inny mogl pokazac tak na szybko chodzi mi o szkic jak powinna wygladac moja klasa lub dana funckja nie mowimy o 100% OOP ale zeby przynajmniej zblizyc sie do jego idee bo ja jak narazie mam tam tylko skladnie OOP
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Tylko, że tego się nie pisze, tylko generuje. Samo się generuje - z czegoś takiego
Kod guest_book _attributes: { phpName: GuestBook } id: nick: type: VARCHAR size: 32 content: type: LONGVARCHAR email: type: VARCHAR size: 32 creation_date: type: TIMESTAMP ip: type: VARCHAR size: 16 Ideą jest natomiast ten fragment kodu, który Ci pokazałem, a który używa tej klasy. Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
No ok dzieki ale to mi w niczym nie pomaga bo klasa jest skomplikowana a sam wygenerowany kod tez mi w niczym nie pomoga przynajmniej ja nie widze jak moglby mi pomoc...
Chodzi mi to czy ktos z was moze powiedziec co musze zmienic i jak zeby ten kod przypominal OOP -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Nie da się tego kodu zmienić. należy go napisać zupełnie inaczej. Pokazałem Ci tą klasę, abyś zobaczył, że OOP to ładne, spójne interfejsy, a nie kod html w metodach. Pierwsza zasada - obiekt ma robić tylko to, na co wskazuje jego nazwa i krótki opis. Twoja klasa to jak samochod, który ma w standardzie obok kół i silnika, możliwość puszczania latawca i parzenie kawy. Potrzebne to do jeżdżenia?
Pozdrawiam i jeszcze raz polecam książkę. Czasami 50 zł trzeba zainwestować. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
@Cysiaczek na ksiazki sknera nie jestem mam w domu kolo 20 ksiazek na temat programowania i jedna do php "Tworzenie stron www vademceum profesjonalisty php+mysql" a teraz jestem za granica ogolnie teraz przejrze ten link co podales i dam tu to co wykombinuje
![]() Wszedzie w klasach widze funckje ktore zwracaja atrubut np pod moja klase takie cos
Zastanawiaja mnie natomiast 2 rzeczy do czego sie to przydaje i i czy jest zaleta uzywanie tego?? -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 30.04.2007 Skąd: WWA Ostrzeżenie: (0%) ![]() ![]() |
Wszedzie w klasach widze funckje ktore zwracaja atrubut np pod moja klase takie cos
Zastanawiaja mnie natomiast 2 rzeczy do czego sie to przydaje i i czy jest zaleta uzywanie tego?? Chodzi o to, żeby nie tworzyć jednej, wielkiej metody, która robi wszystko, ale kilka mniejszych które (jak w przykładzie) zwracają pewne wartości (lub np. zamieniają BBCode na HTML, usuwają niebezpieczne wyrażenia itp.) oraz taką która coś z tymi zwracanymi wartościami robi (dodaje do bazy, wyświetla itp.) A co do drugiego pytania - "czy się przydaje?". Oczywiście! Ponieważ gdy w przyszłości wystapi błąd, będziesz chciał zmienić działanie klasy/metody nie musisz grzebać w setkach linii kodu. Ten post edytował zlw 9.03.2008, 10:29:58 -------------------- Krzysztof Zalewski :: blog
---------------------------------------------------------------------------------------- ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
No ok @zlw wiec poczytalem troche kurs'ow i przykladowych kodow na tym forum i zrobilem cos takiego
Funckja get do zwracania wartosci set do ustawiana i teraz zapisuje sobie do bazy nowy wpis:
I teraz probowalem to wywolywac i robie tak
I tak patrze a przy wyswieltaniu i zapisywaniu do bazy dodaje () czyli jak wpisze jako nick marcio to sie nie wyswietli marcio a (marcio) dlaczego tak sie dzieje?? Cytat Chodzi o to, żeby nie tworzyć jednej, wielkiej metody, która robi wszystko, ale kilka mniejszych które (jak w przykładzie) zwracają pewne wartości (lub np. zamieniają BBCode na HTML, usuwają niebezpieczne wyrażenia itp.) oraz taką która coś z tymi zwracanymi wartościami robi (dodaje do bazy, wyświetla itp.) A co do drugiego pytania - "czy się przydaje?". Oczywiście! Ponieważ gdy w przyszłości wystapi błąd, będziesz chciał zmienić działanie klasy/metody nie musisz grzebać w setkach linii kodu. Zlw moglbys rozwinac twoja odpiwedz bo nie zabardzo zrozumialem np jaki przyklad albo cos? -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
![]()
Masz duże braki w znajomości API języka. Nie myśl, że się czepiam Ciebie ciągle i coś wypominam bez powodu. Powód mam - nie napiszesz nic obiektowo, jeśli nie będziesz rozumiał tego, co robisz. Teraz na wszelkie tłumaczenie zawiłości oop jest moim zdaniem za wcześnie. Obiektowość jest niezależna od języka. Tak samo się projektuje klasy i obiekty w Javie i Rubym, .NET i C++ itd. To, że masz 20 książek o programowaniu, to niewiele znaczy - Ja mam 5. Nie masz wśród nich książki o programowanie obiektowym. Tak zupełnie, ale naprawdę zupełnie poważne i życzliwie radzę Ci - teoria to podstawa - opanuj ją. ~zlw powiedział dokładnie to samo, co ja w poprzednich postach - małe klasy o ograniczonej funkcjonalności. Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Powiem tak ksiazki o OOP nie mam tzn mam ksiazki do C/C++ ale C++ nie znam JAVY czy tam C# tez nie ucze sie C gdzie obiektywnosc jest o wiele trudniejsza i sie jej nie ucze a w php proceduralnie sobie radze i chcialem sie nauczc OOP bo widze ze piszac cms'a mam duzo lini kodu moglbym to napisac na funckjach albi i tak ilosc kodu o duzo sie nie zmniejszy i chce sie nauczyc klas ale kompltnie ich nie rozumie tam jeszcze jej skladnie to troche rozumiem ale nie wiem jak pisac obiektowo dlatego chcialem jakis latwy przyklad etc..
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#16
|
|
![]() Grupa: Przyjaciele php.pl Postów: 463 Pomógł: 49 Dołączył: 27.12.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
dam ci link do artykułu http://kavuka.pl/blog/show/entry_11-Jestes_OOP
![]() ![]() mam nadzieje Cysiaczek ze sie nie obrazisz ze to ja dalem tego linka ![]() -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
eheheh. To samo próbuję wytłumaczyć tutaj, w temacie. Nie da rady pisać OOP bez teorii i żadne przykłady nie pomogą (zwlaszcza, że dałem już jeden, który jest niemal doskonały).
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Czy jestem chociaz na taki etapie??
Cytat Uważam (pewnie nie tylko Ja), że istnieje etap pośredni. Jest to programowanie strukturalne ujęte w klasy. kurde sam juz nie wiem za kazdym razem jak probuje napisac cos lub nauczyc sie czego zwiazanego z OOP to mi nie wychodzi ![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Masz, ale teraz to już naprawdę marsz do książek
Księga gości: Księga gości ma za zadanie zbierać wpisy od gości odwiedzających naszą stronę. Można je przeglądać i dodawać nowe. Zaznaczone słowa to kandydaci na obiekty 1. Księga gości (GuestBook - bo zawsze używamy angielskich nazw) 2. Wpis (GuestBookEntry) 3. Gość (użytkownik, którego tu pominiemy) (GusetBookUser) 4. Obiekt kolekcji wpisów (GuestBookEntryStack)
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Czyli ogolnie powinno sie tworzyc klasy dla kazdej operacji??Dzieki przeanalizuje skrypt i spruboje cos napisac
![]() P.S takie male pytanko tylko nie krzycz masz np takie cos
Etc czyli inne funckje ktorych w kodzie nie widze i czemu tak jest chyba ze nie dowidzialem tego w kodzie to sorki Ten post edytował marcio 9.03.2008, 16:53:48 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#21
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Bo nie będę Ci przecież wszystkich funkcji pisał. Każdy ma jakieś własne, a to jest pseudokod, więc tylko sygnalizuje pewne rzeczy. Przeceż każdy rozumie o co chodzi z getLastInsertId i dlaczego zostało użyte.
Pozdrawiam -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#22
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Wykombinowalem cos takiego bylbym wdzieczny jak ktos powie co jeszcze zle robie co moge poprawic zeby kod byl bardziej elastyczny etc
@Cysiaczek wielkie dzieki troche mi to rozjasnilo idee ale czemu tyle class?
Mam pytanie co zrobic z tym kodem html?? Ten post edytował marcio 9.03.2008, 18:37:48 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#23
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
marcio, ale dlaczego tym kodem robisz właściwie wszystko? Umieszczanie metod obsługujących bazę to jest przesada - od tego powinien być inny obiekt. Co do kodu html, to powinieneś oddzielić go poprzez jakiś system szablonów, a na pewno nie zawierać w klasie w ten sposób.
-------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#24
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
@l0ud a moglbys pokazac mniej wiecej jak ma wygladac taki system szablonow??Tzn szukam ale znalesc nic ciekawego i prostego nie potrafie
P.S funckje dla bazy mam dac do innej klasy tylko jak je potem polaczyc??Zeby te funckje do mysql dzialaly w innej klasie??Wystarczy samo publuc przy funckjach czy jak?? -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#25
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zobacz sobie Open Power Template albo Smarty
Cytat P.S funckje dla bazy mam dac do innej klasy tylko jak je potem polaczyc??Zeby te funckje do mysql dzialaly w innej klasie??Wystarczy samo publuc przy funckjach czy jak?? Masz tu przykład:
Ten post edytował Xniver 9.03.2008, 23:50:40 |
|
|
![]()
Post
#26
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
OK Xniver wielkie dzieki zaraz lukne co robi ten self:: bo parent:: wywoluje metoda z glownej klasy dobrze mowie??
Mam jednak problem probuje zrobic to na 2 klasach i robie tak
Jednak mam takie bledy Cytat Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/new_klasa.php on line 20 Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/new_klasa.php on line 41 Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/new_klasa.php on line 41 Access denied for user 'www-data'@'localhost' (using password: NO) I nie wiem czemu przeciwz daje ze $pasy sa public i robie na nie construct'a na jednej klasie dzialalo czy ktos z was wie czemu tak sie dzieje?? P.S jesli kod jest zadlugi prosze mowic to go usune i wrzuce na jakis server Ten post edytował marcio 10.03.2008, 00:04:48 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#27
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
IMHO gorzej tego zrobić nie mogłeś. Masz tutaj przykład poprawnego sterownika bazy MySQL(napisany specjalnie dla ciebie):
Ten post edytował Xniver 10.03.2008, 00:30:34 |
|
|
![]()
Post
#28
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Wiem ze tego najlepiej nie napisalem ale czy mozesz powiedziec dlaczego moj kod nie dziala na 2 klasach a na jednej tak??Bylbym wdzieczny bo wiesz uczy sie na wlasnych bledach
p.S ciekawy jestem tez czy powiedzialbyc na czym polega system szablonow dla kodu html tak jak napisal mi o tym jeden z user'ow ktory uczestniczyl w tej dyskusji zeby nie dawac kodu html do klas a zrobic system szablonow czyli??Tak w kilku slowach albo jakas alternatywe Ten post edytował marcio 10.03.2008, 00:40:01 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#29
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o ten twój poprzedni kod to tam miałeś błąd w konstruktorze(zapomniałeś o global $pasy(a poza tym global niezbyt pasuje do OOP))
Re P.S: Po prostu chodzi o to ,żeby oddzielić warstwę logiki od warstwy prezentacji(zobacz sobie wzorzec MVC). Zobacz sobie jak to jest rozwiązane w jakimś frameworku(Symfony, Agavi, KohanaPHP) Ten post edytował Xniver 10.03.2008, 00:46:55 |
|
|
![]()
Post
#30
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
O lol az mi siara probowalem dac global ale do glownej klasy
![]() ![]() EDIT: P.S teraz przeczytalem twoj p.s zaraz lukne na framework'a i mvc ![]() EDIT2: Myslalem ze stosujac public dla pierwszej klasy nie bede musial dawac global dlaczego tak sie dzieje?? Ten post edytował marcio 10.03.2008, 01:01:35 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#31
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#32
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
no tak to jak zrobic zebym nie mysial uzywac global wiesz zdaje sie do bzdeta ale jak raz ktos pokarze co i jak to sie pamieta to na zawsze
![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#33
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli zaincludujesz config.php w metodzie/funkcji to nie musisz używać global |
|
|
![]()
Post
#34
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
AHa tak patrzac na ten twoj kod zastanawialem sie nad tym czyli juz rozumiem includujac to w construct i potem dziedziczac ot takiej klasy przy tworzeniu obiektu plik sie includuje i w podklasie a nie tylko w klasie glownej
Zrobilem tak bo w construkcie nie dzialalo i bym musial wszystko zmieniac
Musze teraz poczytac o tym dostepie za pomoca :: o slowach kluczowych self/parent -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#35
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
@marcio - Pokazałem Ci, jak wyglądają klasy księgi gości zbliżone do OOP, a Ty dalej popełniasz te same błędy
![]() Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#36
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
@Cysiaczek staram sie jak moge ale...jakos trudno mi tak odrazu to zrozumiem mysle ze z praktyka moja OOP sie poprawi
P.S znasz moze jakies fajne kursu online albo masz moze jakies ebook'i w PDF bo nie teraz nie ma mnie w polsce i ksiazki nie kupie dopiero w wakacje wielkie dzieki bo wiesz znalazlem kupe kursow ale byly krotkie ![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#37
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Nie, nie posiadam e-booków, ani adresów, bo na łamach php.pl nie uprawiamy piractwa.
Pozdrawiam i powodzenia w nauce ![]() -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#38
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
W sumie masz racje ale dzieki
![]() P.S mam jeszcze jedno male pytanie czy bylbys tak wdzieczny i molgbys mi dac jakies twoje przykladowe klasy co kiedys napisales nie zadlugie i nie skomplikowane sciaglem pager'a Nospor'a ale jest zatrudnu i zadlugi a inne kody w sieci idem moze masz cos ciekawego?? Napisalem to na nowo na 3 klasach + system szablonow jak zwykle nie jest to OOP ale zawsze cos dziala dzialac jednak moze ktos pokazac co by zmienil Mam jeszcze jedno pytanie probowalem to zrobic na interfejsach zeby nie robic tych wszystkich klas i nie dawac extends i robil np tak Plik interface.php
Potem plik interface.php includowalem do new_klasa.php(glowna klasa) i robilem cos takiego
I wywalalo jakis blad a nie wiem dlaczego tzn ze za db_connect prawidlo jest sie odwolywac Db::db_connect a nie Guest::db_connect i tak samo z innymi metodami wiec co zle robilem?? Czy piszac to na interfejsach kod bylby krotszy skoro nie musial bym pisac w kazdel klasie metody lecz tylko w klasie w ktorej je potrzebowalem P.S i jeszcze jedno to co ja robie to jest dziedziczenie Db | Html_code | Guest Jednak dla kadzej klasu musialem pisac wlasne metody jednak stosujac interface wychodzi na wielodziedziczenie czyli Klasa Guest dziedziczy od Db i Html_code naraz nawet ze wyczytalem ze nie jest to jednak takie wielodziedziczenie jak w C++/Java ale czy za pomoca interface nie bylo by mniej kodu i czy idzie tak zrobic bo wtedy pisze tylko metody gdzie mi sa potrzebne Tu jest link klasy:http://rafb.net/p/IOORnq87.html -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#39
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czemu cały czas dziedziczysz/implementujesz interfejs klasę/y Db? Nie możesz po prostu użyć jej jako zewnętrznej klasy?
Ten post edytował Xniver 11.03.2008, 10:41:24 |
|
|
![]()
Post
#40
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Cytat Nie możesz po prostu użyć jej jako zewnętrznej klasy? Czyli bo nie bardzo rozumiem dac do osobnego pliku i co?? P.S kolge mi wytlumaczyl po co sa interfejsy sluza do pracy na obiektach nie na polach jednak nie wiem czy dobrze zrozumialem jak zle to napewno nie jego wina ![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#41
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#42
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Nie chodziło o to:
Czyli wywolujac A::jaka_fuinckja(); daje to to ze z zwnetrza innej klasy mozna wywolac funckje z innej klasy nawet jesli sie nie dziedziczy jej metod ![]() ![]() ![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#43
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 12 Dołączył: 27.01.2007 Skąd: north Poziom: 158 Tytuł: Miszcz Ostrzeżenie: (0%) ![]() ![]() |
Widze tu braki w podstawach OOP. Extends (jak sama nazwa wskazuje sic!) używasz jeżeli chcesz rozszerzyć możliwości klasy (np. sterownik bazy żeby mógł używać innego typu bazy). :: jest to operator dostępu. Używasz go przy dostępie do statycznych metod klasy, dosyć często w singletonach (tak jak tutaj). Dziedziczenie nie jest na wszystko rozwiązaniem. Czasem niepożądana jest obecność innych metod w obiekcie (np. obsługa formatowania tekstu w klasie od strumieniowania audio) dlatego nie można wszystkiego dziedziczyć. Inną sprawą jest wydajność. Gdybyśmy mieli 1001 klas a każda by dziedziczyła po klasie DB, to w każdym obiekcie jednej z tych 1001 klas byłby obiekt klasy DB (no, niedokładnie, ale tak można teoretyzować). Każdy obiekt DB tworzył by połączenie (no, można dać statyczne połączenie, ale i tak spora część obiektu typu DB jest kopiowana!), oddzielne cachowanie i kilka innych pierdół co zaowocuje w wysokim użyciu zasobów i zarżnięciu serwera na amen. :]
-------------------- Blog | plugin system by carbolymer
Residence: #php.pl @ IRCNet "Pralki powstały po to, aby kobiety też mogły programować" |
|
|
![]()
Post
#44
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Dzieki czyli operator :: mozna powiedziec ze zastepuje w pewnym sensie extends jednak dobrze ze dziedzicze klase do formatowania tekstu z ta Guest??Rozjasniles mi idee jednak musze sie nauczyc podstaw czytam i czytam ale wycztac nie potrafie
![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#45
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dzieki czyli operator :: mozna powiedziec ze zastepuje w pewnym sensie extends Nieeee, on służy do wywołania statycznych funkcji klasy(poza tym ty naprawdę się uparłeś na to extends ![]() Ten post edytował Xniver 11.03.2008, 23:01:00 |
|
|
![]()
Post
#46
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
No troche sie uparlem nie wiem czemu
![]() ![]() Mam jeszcze jedno pytanie pozmienialem wszystko i zamiast dawac jako matke klas(czy jakos tam) Mysql_option dalem te :: w metodach w innych klasach gdzie je wywoluje ale stalo sie cos dziwnego przynajmniej dla mnie ![]() A praktycznie chodzi o to ze w funckji do wysylania zapytania sql musialem dac operator :: czyli mam tak
Jednak jak zamiast Mysql_option::db_connect dam $this -> db_connect(); wywala takiego error'a Cytat Fatal error: Call to undefined method Guest::db_connect() in /var/www/new_klasa.php on line 39 Gdzie linia 39 to ta co podalem wyzej a dlaczego nie daje tego error'a prz $this -> db_close();?? Myslalem ze ten operator sluzy tylko do wywolywania metod w innej klasie niz zostaly napisane z nie tez w danej klais eczyli mam taki kod teraz:http://rafb.net/p/pWJLp659.html Moze ktyos wytlumaczyc dlaczego tak sie dzieje P.S znacie jakies fajne kursu online??Chyba sobie w wakacje kupie ksiazki do OOP -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#47
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 26 Dołączył: 29.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Bo $this wywołuje funkcje znajdujące się w aktualnej klasie. A Mysql_option::db_connect() wywołuje statyczną funkcje db_connect klasy Mysql_option
|
|
|
![]()
Post
#48
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
No tak ale ta funckja new_query znajduje sie w klasie Mysql_option i db_connect w niej zeby nie wywolywac 3 metod naraz w innej klasie wiec czemu tak myslalem ze mam uzywac tylko :: w innej klaise bo do $this -> db_close() sie nie pluje interpreter a w tym samym miejscy uzywam
![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#49
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 21 Dołączył: 1.09.2006 Skąd: Edinburgh Ostrzeżenie: (0%) ![]() ![]() |
marcio, a moze zacznij od:
http://pl.wikibooks.org/wiki/PHP/Wst%C4%99...nia_obiektowego http://webcity.pl/webcity/programowanie_ob...e_w_php_5_cz__1 http://webcity.pl/webcity/programowanie_ob...e_w_php_5_cz__2 http://webcity.pl/webcity/programowanie_ob...e_w_php_5_cz__3 No i oczywiscie: http://www.google.co.uk/search?source=ig&a...earch&meta= |
|
|
![]()
Post
#50
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cysiaczek moge prosic Ciebie o wyjasnienie tej linijki z twojego kodu:
przerabiam kod ktory podales jako przyklad i wyskakuje mi taki blad: Fatal error: Can't use method return value in write context in ... pozdrawiam Ten post edytował Noctrum 14.03.2008, 19:01:03 |
|
|
![]()
Post
#51
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Hm, to jest pseudokod, rozbudowany, ale nadal pseudokod. Ja tego kodu nigdy nawet nie uruchomiłem - pisałem z góry na dół, więc błędy będą na pewno. Nie wiem, dlaczego utrzymujesz taki error, bo nie wiem, co zwraca twoja metoda fetchAllRows()
Kiedy to pisałem, zakładałem, że będzie to tablica z rekordami z bazy danych, które następnie zostaną przez metodę loadFromArray() zamienione na obiekty GuestBookEntry. Usuń referencję i zobacz, czy zadziała :] Pozdrawiam -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#52
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Sorki ze nie odpowiadalem ale nie bylo mnie...
Dzieki za kursu ale czytalem je juz... -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#53
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 1 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
A powiedzcie mi jedną rzecz...
Czemu w OOP używa się nazwy typu getLastCostamFromCostam Chodzi o te duże litery... no jak w javie... P.S. Jak ja nienawidzę javy!!!! |
|
|
![]()
Post
#54
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Chyba dla przejzystosci...
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#55
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 1 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ale czemu akurat w ten sposób?
Możne np. dać twarde spacje i jest moim zdaniem bardziej przejrzyste. |
|
|
![]()
Post
#56
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
temat ma duzo wspolnego z OOP ale nie na poziomie pozwalajacym pozostawienie go w tym dziale.
Przenosze -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
![]()
Post
#57
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ale czemu akurat w ten sposób? Możne np. dać twarde spacje i jest moim zdaniem bardziej przejrzyste. To używaj innych języków tam gdzie to stosuję, ale nie jest bardziej przejrzyste, do tego dłuższe. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#58
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 1 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
To dlaczego w php jedne funkcję są s twardymi spacjami jak np. is_array(), str_replace itd... a inne bez, np. getType()...? Czyż to nie dziwne?
|
|
|
![]()
Post
#59
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat To dlaczego w php jedne funkcję są s twardymi spacjami jak np. is_array(), str_replace itd... a inne bez, np. getType()...? Czyż to nie dziwne? Cóż... niekonsekwentne przestrzeganie nazw funkcji to jedna z wad php, a już jest raczej za późno żeby to poprawić... -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#60
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cóż... niekonsekwentne przestrzeganie nazw funkcji to jedna z wad php, a już jest raczej za późno żeby to poprawić... Pierwotnie PHP czerpało inspirację w nazewnictwie i działaniu z C (w którym jest napisane) ale obiektowość jest z Java stąd ta zmiana sposobu nazewnictwa. Co nie zmienia faktu, że nie jest konsekwentne. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#61
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 5 Dołączył: 15.04.2006 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#62
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 2 Dołączył: 20.02.2007 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
A powiedzcie mi jedną rzecz... Czemu w OOP używa się nazwy typu getLastCostamFromCostam Chodzi o te duże litery... no jak w javie... P.S. Jak ja nienawidzę javy!!!! Notacja "wielbłądzia". CamelCase @ Wikipedia. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 13:44 |