ООП на службе почты
Что возьмём за объект? Правильно, письмо. При рассылке почты многим подписчикам надо будет поменять лишь адрес получателя.
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;
}
}
Это класс файла. Класс базы данных ? сложнее. Помимо считывания информации там есть функции конфигурации соединения с сервером (например, программа может устанавливать соединение, а потом его закрывать, или использовать имеющееся), установка логина/пароля/хоста сервера БД. А аргументами к функции-конструктору являются имя таблицы, имя поля и условия выборки.