Архив рассылки -программирование на PHP

         

Это массив, где в качестве номера...


Это массив, где в качестве номера ячейки используется не порядковое число, а строка символов.

function mail_attach($name, $type, $data) { $this->mail_attach_type[$name]=$type; $this->mail_attach[$name]=$data; }
Этой функцией мы загоняем в два разных массива: тип данных и сами данные, имена ячеек в этих массивах при этом совпадают, что нам будет очень полезно. Удачный случай показать эффективное применение ассоциативных массивов.

Эта функция удобна, когда мы на ходу генерируем данные для вложенного файла. Тогда вызов функции звучит логично, например:

начало цикла
$this->mail_attach($err[$n],"text/html", "<b>Ошибка такая-то, </b><br><br>примите меры!");
конец цикла

Т.е. наши вложенные файлы будут иметь формат html и нести небольшой текст с номером ошибки.

Особенно это удобно, когда делаешь "на лету" какое-нибудь преобразование. Например, я бы захотел высылать подписчиками маленькие варианты карикатур с caricatura.ru. Зачем же мне после преобразования карикатуры или нанесения на нее защитной надписи сохранять файл на диске, генерируя уникальное имя, потом читать его, а потом за собой удалять? Вот тут удобно данные передать сразу в функцию отправки.

А как быть с файлами с диска? Да очень просто.

function mail_fileattach($path, $type) { $name=ereg_replace("/(.+/)/","",$path); if(!$r=fopen($path,'r')) return(1); $this->mail_attach($name, $type, fread($r,filesize($path))); fclose($r); return(0); }
Идея понятна?

Мы передаем функции mail_fileattach путь к файлу на диске (или в Сети) и его тип (формат).

Первой строкой мы отцепляем от пути только название. Вернее -- удаляем все символы до названия файла, чтобы получить $name.

Второй строкой открываем файл на чтение, не забыв поставить проверку на открытие -- зачем нам надо высылать пустой аттач, мы лучше администратору вышлем самое грозное из наших предупреждений -- 1.

А третьей строкой вызываем написанную до этого функцию, которой передаем знакомые нам параметры, только в качестве третьего параметра зачитываем данные из файла.

Не забываем закрыть файл!

Вот тут очень важно заметить следующее.



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