Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Błąd w funkcji
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam,


Napisalem sobie taki kod :

  1. public function header ($mID, $param = '' ) {
  2. $eHeader = imap_header($this->_connection, $mId);
  3. if($param) {
  4. return $eHeader->param;
  5. }
  6. return $eHeader;
  7. }
  8.  
  9. public function status() {
  10. return imap_mailboxmsginfo($this->_connection);
  11. }
  12.  
  13. public function to($mId){
  14. return $this->header($mId, 'toaddress');
  15. }
  16.  
  17. public function subject($mId) {
  18. return $this->header($mId, 'subject');
  19. }
  20.  
  21. public function from($mId) {
  22. return $this->header($mId, 'senderaddress');
  23. }


No i teraz wykonuje go w ten sposob :

  1.  
  2. $info = $mailbox->status();
  3. echo $info->Nmsgs;
  4. for($i = 1; $i < $info->Nmsgs; $i++) {
  5. echo $head = $mailbox->subject($i);
  6. }


Wydawaloby sie ze wszystko jest ok, przynajmniej ja zadnego bledu nie widze, a tutaj prosze jaki dostaje rezultat :

Cytat
Notice: Undefined variable: mId in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 48

Warning: imap_header() [function.imap-header]: Bad message number in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 48

Notice: Trying to get property of non-object in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 50


gdzie 48 linijka to ta :

  1.  
  2. $eHeader = imap_header($this->_connection, $mId);


a 50 linijka to ta :

  1. return $eHeader->param;


Co tutaj jest nie tak ?

Message number jest napewno poprawnie bo wyswietla sie prawidlowa liczna wiadomosci echo $info->Nmsgs;, mId tez powinno byc dlatego w porzadku, bo przeciez podaje do funkcji odpowiednia liczbe.....a co do tego non-object to nie mam pojecia co jest nie tak.....
TrevorGryffits
Literówka. Zobacz jak wygląda feralna zmienna w definicji funkcji, a jak ją wywołujesz w jej ciele.
Wolfie
Ok, poprawilem , teraz dziala znacznie lepiej ale wywala jeszcze jeden blad :

Cytat
Notice: Undefined property: stdClass::$subject in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 50



ale tylko w dwoch przypadkach, gdzies miedzy wyswietlanymi tematami wiadomosci.....

Jak sie zorientowalem to jest to spowodowane brakiem tamatu wiadomosci

ale gdy robie taka pentelke :

  1. for($i = 1; $i < $info->Nmsgs; $i++) {
  2. if($mailbox->subject($i) = ''){
  3. echo "brak tematu";
  4. } else {
  5. echo $head = $mailbox->subject($i).'<br/>';
  6. //echo str_replace($search_arr, $replace_arr,$head->subject).'<br/>';
  7. }


To otrzymuje taki komunikat :

Cytat
Fatal error: Can't use method return value in write context in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 109
TrevorGryffits
Za bardzo się nie przyglądałem, ale... Nie możesz dać tylko param, bo to PHP interpretuje tak, że chcesz dostać się do właściwości obiektu "param", powinienieś napisać "$param", bo w ten sposób PHP najpierw zamieni na wartośc zmiennej, a potem dopiero poszuka w obiekcie.
Wolfie
Wiem, juz to wczesniej poprawilem, sprawa sie tyczy tego ze dla niektorych wiadomosci nie wystepuje wogole temat wiec nie jest zdefiniowana wlasciwosc $subject

Zrobilem to w ten sposob :

  1. for($i = 1; $i < $info->Nmsgs; $i++) {
  2. if($mailbox->subject($i) === null){
  3. echo "brak tematu".'<br>';
  4. } else {
  5. echo $head = $mailbox->subject($i).'<br/>';
  6. //echo str_replace($search_arr, $replace_arr,$head->subject).'<br/>';
  7. }
  8. }


No i teraz pojawia sie etykietka brak tematu, ale i tak pojawia sie taki blad :

Cytat
Notice: Undefined property: stdClass::$subject in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 50


Jak sobie z tym poradzic ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.