![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Witam
Szukam obiektowych skryptow napisanych najlepiej w php5 dotyczacych webowego klienta poczty. Przegladalem wiele skryptow ale tam wszystko jest strukturalnie, lub mieszanina funkcji z logika prezentacji. A ze chce napisac wlasnego klienta poczty napisanego obiektowo potrzebne mi sa jakies przyklady i pomoce. Poniewaz moja nauka jezyka obiektowego dopiero sie rozpoczyna i nie potrafie przerobic od tak skryptu strukturalnego na obiektowy. Jak narazie mam takie cos :
Ale nie mam zielonego pojecia jak np teraz dodac do tego logowanie uzytkownika lub zaznaczac maile np do wyrzucenia.... Ten post edytował Wolfie 15.02.2009, 21:21:35 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Tobie bardziej chodzi o to jak zaprojektować aplikację a nie klasę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Po pierwsze. Dobrze zaczynasz. Klasa do obsługi klienta poczty nie ma mieć nic wspólnego z interfejsem. Ma swój cel (wyrzuć to , dodaj to) i powiedz mi czy się udało (true,false, badz kod błędu). I na podstawie odpowiedzi metody klasy ( w twoim przypadku do obslugi klienta poczty) operujesz interfejsem (czy operacja sie udala, czy uzytkownik wypelnil dobrze formularz itd). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Fakt, raczej chodzi o zaprojektowanie aplikacji.
Tylko teraz nie wiem jak polaczyc te funkcje z interfejsem uzytkownika. Powiedzmy ze napisze sobie formularz logowania ale nie wiem teraz jak to polaczyc z ta klasa ktora mam. Powiedzmy ze napisze formularz logowania ktory przesyla uzytkownika i haslo , tylko teraz pytanie gdzie on ma to wysylac ? Tzn chodzi o to czy mam napisac w osobnym pliku skrypt ktory bedzie odbieral dane od uzytkownika i inicjalizowal obiekty z mojej funkcji ? No i jak juz zainicializuje te obikety to jak mam wyswietlac dane ? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Przykład krok po kroku. Zalozmy mamy na celu napisanie nowej wiadomosci nasz plik do obsługi tego to napisz.php
Ogólny zarys kodu: Kod // sesje, includy itd // czesto dodaje hiddena w formularzu ktory mi jasno mowi czy formularz został wysłany if(isset($_POST['send'])) { //sprawdzenie poprawnosci danych, ochrona przed atakami xss itd // jezeli uzytkownik zrobil wszystko dobrze to wykonujemy operacje wyslania maila // wyswietlamy uzytkownikowi info czy sie udalo, czy nie, czy wystapily jakies bledy bla bla badz w przypadku udanej operacji pokazujesz cos lub przekierowujesz na inna strone // w przypadku jak nie przekierowujesz to ustawiasz $showForm=0; // gdy uzytkownik zle wypelnil dane ustawiasz $showForm=1; } if($showForm) { // pokaz formularz } Oczywiscie jest to tylko zarys i przykladowa najprostsza koncepcja. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Wolalbym przyklad logowania sie uzytkownika z danym haslem i wyswietlenie wiadomosci ze skrzynki pocztowej , to by mi wyjasnilo wiele kwestii.
Chociazbyt to jak laczyc formularz i wywolywac odpowiednia funkcje z klasy, i po wywolaniu jak wyswietlac wiadomosci ktore znajduja sie w skrzynce..... |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No stary nie przeginaj. Podałem ci tak ogólny schemat, że każdy bez problemu w każdym punkcie komentarzaj mojego kodu wstawi bez problemu to co chcesz uzyskać. Pomyśl bo to naprawdę nie jest trudne tym bardziej po otrzymanym schemacie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
No niby tak , ale to mi wyglada na kod strukturalny a nie obiektowy.....
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
... Obiektowo to mozesz sprawdzac poprawnosc danych (jakas klasa do kontroli danych uzytkownika), pokazywac szablon, przekierowywac na inna. Ogolny zarys obslugi tych metod robi się wlascie skrukturalnie... Wyobrazasz sobie jedna uniwersalna metody? Która by obsłużyla kazdy widok strony a owa metoda i tak musi byc wywolana programowaniem strukturalnym.
Zresztą zobacz sobie kod profesjonalnych cmsów i wszystko będzie jasne. Ten post edytował wookieb 16.02.2009, 00:39:41 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Przekazywac szablon - swietnie
A moglbys mi podac przyklad jak wywolywac szablon obiektowo ? Powiedzmy ze mam jakis kod html i szablon tpl. Jak teraz np wywolac widok tego szablonu uzywajac funkcji ? (oczywiscie nie piszac kodu html w funkcji) Ten post edytował Wolfie 16.02.2009, 00:44:37 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A smarty widział? Masz tam przepiękny przykład JAK W OGÓLE odpalić smarty...
W open power template jest nawet przykład z singletonem. (nie wiem czy w manualu smarty tez jest bo uzywam wlasnie opt) Ten post edytował wookieb 16.02.2009, 00:52:25 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Oczywiscie ze widzialem smarty , wiem jak robic templatki w tym , ale chodzi mi o to jak wywolac widok a nie jak utworzyc szablon....
|
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
To już zależy od tego jakiej architektury się trzymasz. Na php.pl masz kurs o mvc. Poczytaj.
Mój przykład był czysto strukturalny dla ułatwienia rozumowania. Osobiście trzymam się takiego schematu który nie dla każdego może być słuszny ale dla mnie jest jak najbardziej wystarczający i ma swoje zalety. Kod $module; // moduł klasy obsługi wszystkich mechanizmow zwiazanych z zarzadzaniem kontem itd $content=$module->executeView('login'); // logowanie usera gdzie w executeView jest cos takiego Kod switch($view)
{ case 'login': // tutaj dalszy kod break; case ... } Ten post edytował wookieb 16.02.2009, 01:20:36 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
No wlasnie po to chce to napisac obiektowo zebym mial wszystko od siebie oddzielone i latwo modyfikowalne. No i oczywiscie po to zeby sie nauczyc poprawnie programowac obiektowo.
Cytat case 'login': // tutaj dalszy kod break A co kryje sie pod pojeciem "tutaj dalszy kod" ? |
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Np schemat który ci podałem wcześniej.
Do listowania elementow mam co innego. np Kod $lista=klasa_obslugi_meczy->getList(); $tpl->assign('list', $lista); return $tpl->view('szablon.tpl'); Twój problem polega na tym, że nie wiesz jak do tego się zabrać dlatego naprawdę poczytaj o mvc. Ten post edytował wookieb 16.02.2009, 01:27:52 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Napisalem cos takiego :
i do tego index.tpl Kod <html> <head> <title>Login Form</title> <head> <body> <form action="post"> <div> <label>{$email}</label> <input type="text" name="email"> </div> <div> <label>{$password}</label> <input type="text" name="password"> </div> <div> <input type="submit" value="Zaloguj"> </div> </form> </body> </html> Jak teraz przekazac to do funkcji odpowiedzialnej za polaczenie ze skrzynka ? Czytalem juz o MVC sporo , ale nic do mnie z tego nie dociera.....model , kontroler , widok.....powiazanie tego , wszystko o tym czytalem , dlatego postanowilem zaczac cos programowac , moze wyjasni sie po drodze , bo juz nie nie wytrzymuje czytajac kolejny post o mvc, od tej teorii juz mi sie zle robi a i tak nie potrafie sobie tego wyobrazic w prkatyce , dlatego zaczalem pisac tego klienta...... Ten post edytował Wolfie 16.02.2009, 01:30:36 |
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A czy w ogóle dobrze przeanalizowałes sobie mój schemat? Jak nie to ci napisze jeszcze raz duzymi literami ale teraz juz w odniesieniu do mojej metody
Kod if(isset($_POST['send']))
{ // sprawdzasz tresc danych z formularza, ochrona xss badz sql injection // jezeli wszystkie dane wypelnione i jest ok jedziesz dalej. Bledy uzytkownik (nie podal loginu, wrzucaj np do tablicy $errors); if($twoja_klasa->czy_poprawne_dane_logowania($_POST['login'], $_POST['password'])) { // przeniesc na inna strone albo co innego redirect('strona z profilem usera'); //badz return $szablon->view('inny_szablon'); } } // pokazujesz formularz wraz z ewentualnymi bledami ($errors); return $szablon->view('formularz'); Ten post edytował wookieb 16.02.2009, 01:37:00 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Ok. A ten ostatni schemat to kontroler czy widok ?
Podejrzewam ze widok , a jak w takim razie wygladalby kontroler ? Zrobilem tak : Z pliku ktory napisalem w pierwszym poscie wyrzucilem wyswietlanie widoku, zostala tylko klasa i funkcje. Nastepnie stworzylem formularz logowania z szablonem w smarty.Formularz ten przesyla dane do pliku:
Pytanie moje brzmi: Czy to tutaj (tzn w pliku powyzej) powinienem inicjalizowac obiekt klasy Mailbox? Czy powinno sie to odbywac w konstruktorze klasy Mailbox ? A moze stworzyc jakas funkcje w tej klasie ktora bedzie go wywolywac ? No a druga sprawa to taka czy w tym pliku powinno wogole byc wyswietlanie czy powinienem stworzyc osobna klase ktora bede wywolywal w tego typu plikach i ja wywolywac? Ten post edytował Wolfie 16.02.2009, 03:34:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 11:55 |