У меня есть несколько проектов, в которых используется imap_*
набор функций из расширения PHP IMAP.
Задача состоит в том, чтобы получать почту с mailhost, выполнять некоторую обработку и, основываясь на результатах, сохранять их в БД или отвечать на письма (т. Е. Неверный формат запроса задачи)
Работа с функциями imap_*
является задачей очень низкого уровня, с большим количеством повторяющегося кода, поэтому я дошел до того, что мне следует реализовать некоторую унифицированную библиотеку, которая будет охватывать функции imap и позволит мне работать над высокоуровневые, четко определенные классы / интерфейсы / фабрики объектов и т. д.
Вопрос в том, как мне организовать классы / код для этой задачи? Я знаю, что плохо спроектированная библиотека - это хуже, чем вообще никакой библиотеки:)
[EDIT]
Моя первоначальная идея состояла в том, чтобы создать класс Transport
, который будет оборачивать соединение, скрыть дескриптор почтового ящика (результат imap_open
) внутри частного свойства и использовать функции imap_*
с помощью волшебства __call
.
Класс Secod будет AccessManager
, который будет использовать класс Transport
и позаботиться о логике извлечения почты, а может быть, и третьим Message
фабрикой объектов? Или Message
класс должен иметь статический инициализатор ::createFromSomething()
?