PHP в деталях

ООП на службе почты


Что возьмём за объект? Правильно, письмо. При рассылке почты многим подписчикам надо будет поменять лишь адрес получателя.

class Message {

Свойства класса: содержимое письма, тема, тело письма и служебные заголовки.

class Message {

  var $text = "";

  var $to = "";

  var $subject = "Новости сайта Васи Пупкина";

  var $headers = "

From: \"Вася Пупкин\" <vasya@pupkin.ru>

Reply-to: \"Вася Пупкин\" <vasya@pupkin.ru>

Organization: Студия веб-дезигна Васи Пупкина

X-Mailer: PHP/4

X-Priority: 3 (Normal)



Content-Type: text/plain; charset=koi8-r

";

Конструктор объекта.

  function Message($text) {

    $this->text = $text;

    }

Функция отправки одного письма.

  function send() {

    mail(convert_cyr_string($this->to,"w","k"), convert_cyr_string($this->subject, "w", "k"), convert_cyr_string($this->text, "w", "k"), convert_cyr_string($this->headers, "w", "k"));

    }

Функция отправки писем всем подписчикам.

  function send_all($maillist) {

    if (is_object($maillist))

      if ($maillist->fetch())

        for ($a=0;$a<sizeof($addr);$a++) {

          $this->to = $maillist->addr[$a];

          $this->send();

          };

    }

  }

И это всё, что есть в классе Message. Список подписчиков хранится в объекте $maillist, который мы передаем в качестве параметра функции (естественно, в теле программы назвать можно его как угодно).

Вместе с классом Message я использую классы Database (пока поддерживает только MySQL, если кто-то пришлет то же самое для другой базы, буду много благодарен) и класс File, которые используются для получения списка адресатов.


class File {

  var $filename = "";

  var $addr = array();

  function File($filename) {

    $this->filename = $filename;

    }

  function fetch() {

    $this->addr = file($this->filename);

    if ($this->addr)

      return true;

    else

      return false;

    }

  }

Это класс файла. Класс базы данных ? сложнее. Помимо считывания информации там есть функции конфигурации соединения с сервером (например, программа может устанавливать соединение, а потом его закрывать, или использовать имеющееся), установка логина/пароля/хоста сервера БД. А аргументами к функции-конструктору являются имя таблицы, имя поля и условия выборки.


Содержание раздела