Musisz napisać klasę, która implementuje po klasie
Iterator i napisać odpowiednie metody.
Masz szybki przykład bez wnikania w szczegóły:
<?php
class IMAP implements Iterator
{
private $resIMAPConnection = null;
private $strHost = 'localhost';
private $strType = 'pop3';
private $intPort = 110;
private $strMailboxName = 'INBOX';
private $strUser = null;
private $strPassword = null;
private $intCurrentMessageId = 1;
/**
* Konstruktor klasy.
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
* @param string $strHost [localhost] Nazwa serwera pocztowego
* @param integer $intPort [110] Numer portu
* @param string $strType [pop3] Typ serwera pocztowego
* @param string strMailboxName [INBOX] Nazwa skrzynko pocztowej
* @param string $strUser Nazwa użytkownika
* @param string $strPassword Hasło użytkownika
*/
public function __construct( $strHost = 'localhost', $intPort = 110, $strType = 'pop3', $strMailboxName = 'INBOX', $strUser = '', $strPassword = '' )
{
$this->strHost = $strHost;
$this->intPort = $intPort;
$this->strType = $strType;
$this->strMailboxName = $strMailboxName;
$this->strUser = $strUser;
$this->strPassword = $strPassword;
$this->resIMAPConnection = @imap_open( '{' . $strHost . ':' . $intPort . '/'. $strType . '}' . $strMailboxName, $strUser, $strPassword );
}
/**
* Zwraca obiekt wiadomości.
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
* @param integer $intMessageNumber Identyfikator wiadomości
* @return object Obiekt wiadomości
*/
public function getMessage( $intMessageNumber = 1 )
{
return new IMAPMessage( $this->resIMAPConnection, $intMessageNumber );
}
/**
* Zwraca ilość wiadomości w skrzynce pocztowej
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
* @return integer ilość wiadomości w skrzynce pocztowej
*/
public function getMessagesNumber()
{
return (int)@imap_num_msg( $this->resIMAPConnection );
}
/**
* Zwraca ilość nowych wiadomości w skrzynce pocztowej
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
* @return integer ilość nowych wiadomości w skrzynce pocztowej
*/
public function getRecentMessagesNumber()
{
return (int)@imap_num_recent( $this->resIMAPConnection );
}
/**
* Ustawia "kursor" wiadomości na pczątku.
* Przed piwerszą wiadomością.
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
*/
{
$this->intCurrentMessageId = $this->getMessagesNumber();
}
/**
* Sprawdza czy są jeszcze jakieś wiadomości
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
* @return boolean true jeśli są keszcze wiadomości, inaczej false
*/
function valid()
{
return (boolean)( $this->intCurrentMessageId > 0 );
}
/**
* Zwraca aktualną pozycję kursora.
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
* @return integer Identyfikator bieżącej wiadomości
*/
{
return $this->intCurrentMessageId;
}
/**
* Zwraca obiekt bieżącej wiadomości
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
* @return object
*/
{
return $this->getMessage( $this->intCurrentMessageId );
}
/**
* Przesuwa kursor wiadomości do przodu.
*
* @access public
* @author Michał Mech <michal.mech@gmail.com>
*/
{
$this->intCurrentMessageId--;
}
/**
* Destruktor klasy.
*
* Zamyka połączenie z serwerem pocztowym
*
* @author Michał Mech <michal.mech@gmail.com>
* @return boolean true w razie powodzenia, false w przeciwnym przypadku
*/
public function __destruct()
{
return (boolean)@imap_close( $this->resIMAPConnection );
}
}
?>