Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zmiana strukturalny->obiektowy
Wolfie
post 10.02.2009, 15:17:26
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam

Jestem poczatkujacy w php a takze w programowaniu obiketowym.
Mam strukturalny skrypt ktory wyglada tak :

  1. <?php
  2.  
  3.        $mailbox = "{imap.gmail.com:993/imap/ssl}INBOX";
  4.        $user = "jakisuser@gmail.com";
  5.        $pass = "jakieshaslo";
  6.  
  7.        $mbox = imap_open ($mailbox, $user, $pass)
  8.        or die("can't connect: " . imap_last_error());
  9.  
  10.  
  11.        echo "<h1>Mailboxes</h1>\n";
  12.        $folders = imap_listmailbox($mbox, "{imap.gmail.com:993}", "*");
  13.  
  14.        if ($folders == false) {
  15.            echo "Call failed<br />\n";
  16.        } else {
  17.            foreach ($folders as $val) {
  18.                echo $val . "<br />\n";
  19.            }
  20.        }
  21.  
  22.        echo "<h1>Headers in INBOX</h1>\n";
  23.        $headers = imap_headers($mbox);
  24.  
  25.        if ($headers == false) {
  26.        echo "Call failed<br />\n";
  27.        } else {
  28.            foreach ($headers as $val) {
  29.                echo $val . "<br />\n";
  30.            }
  31.        }
  32.  
  33.        $num = array(1,2,3);
  34.        $numC = count($num);
  35.  
  36.        echo '<h1>Body of specified message</h1>';
  37.        for ($i = 0; $i < $numC; ++$i)
  38.        {
  39.        $body = imap_body($mbox, $num[$i]);
  40.  
  41.        if ($body == false) {
  42.            echo 'Call failed (' . $num[$i] . ')<br />';
  43.        }
  44.        else
  45.            echo $body;
  46.        }
  47.  
  48.        imap_close($mbox)
  49.  
  50.  
  51.        ?>


Ale chce go przerobic na kod obiektowy
Powiedzmy ze na poczatek chcialbym tylko polaczyc sie do serwera i wyswietlic headery
Moje proby wygladaja tak :
  1. <?
  2.  
  3. class Mailbox
  4.    {
  5.        protected $_connection = null;
  6.        
  7.        public function connect($server, $user, $pass, $port = 993, $protocol = 'imap')
  8.            {
  9.                if(!($this->_connection = imap_open('{'.$server.':'.$port.'/'.$protocol.'/ssl}INBOX')))
  10.                    throw new Exception ('Connection failure');
  11.            }
  12.        
  13.        public function show_headers()
  14.            {
  15.                echo "<h1>Headers in INBOX</h1>\n";
  16.                $this->_headers = imap_headers($_connection);
  17.                
  18.                if ($this->_headers == false)
  19.                    {
  20.                    echo "Call failed<br />\n";
  21.                    }
  22.                else
  23.                    {
  24.                    foreach ($_headers as $val)
  25.                        {
  26.                        echo $val . "<br />\n";
  27.                        }
  28.                    }
  29.            }
  30.    }
  31.  
  32.    
  33. $mailbox = new Mailbox;
  34. $mailbox->connect(gmail.com,jakisuser@gmail.com,jakieshaslo,993,imap);
  35. $mailbox->show_headers;    
  36. ?>


Wywala mi błąd :
Cytat
syntax error, unexpected '@' in C:\Program Files\WebServ\httpd\OOP\OOP\Mailbox.php on line 34

czyli bład w tej linijce :
$mailbox->connect(gmail.com,jakisuser@gmail.com,jakieshaslo,993,imap);


Jak mam sobie z tym poradzic ?
No i czy ogolnie struktura mojego programu obiektowego jest poprawnie napisana ? Co nalezaloby poprawic ?
Kolejna rzecza jest ze oczywiscie bede chcial do tego zrobic stronke aby mozna bylo podawac dane uzywtkowinka i halo zanim informacje zostana przeslane do skryptu php.....prosze o podpowiedzi.
Go to the top of the page
+Quote Post
Ramadisu
post 10.02.2009, 15:22:28
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 27.01.2009

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


Kod
connect('gmail.com','jakisuser@gmail.com','jakieshaslo'...


Ten post edytował Ramadisu 10.02.2009, 15:22:52
Go to the top of the page
+Quote Post
Wolfie
post 10.02.2009, 15:40:47
Post #3





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Juz tak probowalem:

Wywala nastepujacy blad :
Cytat
Warning: Wrong parameter count for imap_open() in C:\Program Files\WebServ\httpd\OOP\OOP\Mailbox.php on line 9

Fatal error: Uncaught exception 'Exception' with message 'Connection failure' in C:\Program Files\WebServ\httpd\OOP\OOP\Mailbox.php:10 Stack trace: #0 C:\Program Files\WebServ\httpd\OOP\OOP\Mailbox.php(34): Mailbox->connect('gmail.com', 'jakisuser@gm...', 'jakieshaslo', '993', 'imap') #1 {main} thrown in C:\Program Files\WebServ\httpd\OOP\OOP\Mailbox.php on line 10
Go to the top of the page
+Quote Post
wookieb
post 10.02.2009, 15:42:54
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A listę argumentów funkcji imap_open patrzał?
http://pl.php.net/imap_open


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 10.02.2009, 15:46:30
Post #5





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Patrzal....ale nic mi to nie mowi.....jak zaznaczylem wczesniej jestem poczatkujacy......

Zreszta probowalem takiego zapisu :

  1. <?php
  2. $user = "jakisuser@gmail.com"
  3. ?>


I tez cos jest nie tak.....
Nie orientuje sie zbytnio w prog obiektowym dlatego napisalem ten post , jakby spojrzenie w funkcje imap_open dalo mi odpowiedz nie pisalbym tutaj......
Go to the top of the page
+Quote Post
wookieb
post 10.02.2009, 15:50:56
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




poczatkujacy to nie znaczy, że masz nie znac podstaw czytania manuala. Policz sobie ile ty dajesz argumentów w funkcji imap_open a ile jest w manualu.

No przecież teraz zapis twoich zmiennych jest dobry. A błąd dotyczy imap_open...
"Wrong parameter count for imap_open()" = Zła liczba argumentów dla imap_open...

Poza tym kolejny błąd.
Kod
$this->_headers = imap_headers($this->_connection);


Ten post edytował wookieb 10.02.2009, 15:54:44


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 10.02.2009, 16:58:41
Post #7





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Masz racje. Ale mogles od razu powiedziec w czym rzecz a nie odsylasz mnie do manuala.....
Niedopatrzenie z mojej strony , nie przeczytalem dokladnie komunikatu - dzieki.

Poprawilem kod ale teraz mam problem z wyswietlaniem.

Tu kod odpowiedzialny za wyswietlanie

  1. <?
  2. public function show_headers()
  3.            {
  4.                echo "<h1>Headers in INBOX</h1>\n";
  5.                $this->_headers = imap_headers($_connection);
  6.                
  7.                if ($_headers == false)
  8.                    {
  9.                    echo "Call failed<br />\n";
  10.                    }
  11.                else
  12.                    {
  13.                    foreach ($_headers as $val)
  14.                        {
  15.                        echo $val . "<br />\n";
  16.                        }
  17.                    }
  18.            }
  19.    }
  20.  
  21.    
  22. $mailbox = new Mailbox;
  23. $mailbox->connect('gmail.com','jakisuser@gmail.com','jakieshaslo','993','imap');
  24. $mailbox->show_headers();    
  25. ?>


A tutaj komunikat :
Cytat
Warning: imap_headers(): supplied argument is not a valid imap resource in C:\Program Files\WebServ\httpd\OOP\OOP\Mailbox.php on line 16
Call failed


Oczywiscie manual przegladalem - imap_headers musze wywolac z parametrem imap_open czyli $_connection w moim przypadku jezeli wszystko dobrze rozumiem wiec nie wiem dlaczego wystepuje blad.....

Ten post edytował Wolfie 10.02.2009, 17:10:33
Go to the top of the page
+Quote Post
wookieb
post 10.02.2009, 17:01:09
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat
Masz racje. Ale mogles od razu powiedziec w czym rzecz a nie odsylasz mnie do manuala.....

Pewnie, że będe odsyłał smile.gif Samodzielność przede wszystkim smile.gif

A widzisz roznice pomiedzy $this->_headers a $_headers?


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 10.02.2009, 17:06:35
Post #9





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Tak roznice widze....dlatego edytowalem post ktory znajduje sie nad Twoim smile.gif
Go to the top of the page
+Quote Post
wookieb
post 10.02.2009, 17:08:30
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Przeczytaj mój post numer 6. I pamiętaj o $this

Ten post edytował wookieb 10.02.2009, 17:08:58


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 10.02.2009, 17:15:13
Post #11





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Super smile.gif
Teraz wszystko dziala , dzieki laugh.gif

To teraz jeszcze pytanko ktore napisalem na poczatku....
Jezeli napisze sobie funkcje ktora bedzie usuwac maile to jak wywolywac taka funkcje za pomoca html czy javascript?

Bo przeciez chce aby uzytkownik cos z tymi danymi byl w stanie zrobic , nie tylko je ogladac.....

Ten post edytował Wolfie 10.02.2009, 17:18:04
Go to the top of the page
+Quote Post
erix
post 10.02.2009, 17:56:00
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zrób sobie w konstruktorze sprawdzanie akcji - a ją samą przekazuj przez $_GET.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 11.02.2009, 12:52:47
Post #13





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Ok.
Wiem co to jest konstruktor i metoda $_GET ale jak sprawdzic akcje to juz dla mnie zagadka.....szczerze mowiac nie wiem o czym mowisz.....
Go to the top of the page
+Quote Post
erix
post 11.02.2009, 18:25:54
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No patrz, najprościej:
  1. <?php
  2. class asd{
  3.  
  4.    function __construct(){
  5.        $action = empty($_GET['action']) ? '' : $_GET['action'];
  6.    
  7.        switch($action){
  8.            case 'akcja1':
  9.                // szukaj krasnoludków
  10.            break;
  11.            
  12.            case 'akcja2':
  13.                // kop dół
  14.            break;
  15.            
  16.            case 'akcja3':
  17.                // lep garnki
  18.            break;
  19.            
  20.            default:
  21.                //wolne ;)
  22.        }
  23.    
  24.    }
  25.  
  26. }
  27. ?>


A wywołanie? skrypt.php?action=akcja1, skrypt.php?action=akcja2, itp.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 12.02.2009, 16:53:43
Post #15





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Czy to ma moze jakis zwiazek z wzrocem MVC ?
Bo chce napisac wlasnie aplikacje zgodna z tym wzorcem , oczywiscie obiektowo.
Czy to jest plik kontrolera ?
Go to the top of the page
+Quote Post
erix
post 12.02.2009, 17:52:03
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To może być np. kontroler. Ale nie pytaj nas o takie rzeczy, o których już naprawdę wiele powiedziano...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:52