可重复使用的邮件客户端库的代码组织和设计

时间:2011-05-04 17:42:18

标签: php design-patterns class-design

我现在有很少的项目使用PHP IMAP扩展中的imap_*个函数集。

任务是从mailhost获取邮件做一些处理并根据结果,将它们存储在数据库中或回复邮件(即无效的任务请求格式)

使用imap_*函数是一个非常低级的任务,有很多重复的代码,所以我得到了一点,我应该实现一些覆盖imap函数的统一库,让我工作在高级,定义良好的类/接口/对象工厂等。

问题是我应该如何组织此任务的类/代码?我知道设计糟糕的库比没有库更糟糕了:))

[编辑]

我最初的想法是创建将包装连接的Transport类,隐藏私有属性中的邮箱句柄(imap_open的结果),并通过imap_*函数使用__call魔法。 Secod类将是AccessManager,它将使用Transport类并负责邮件获取逻辑,并且还可能是第三个Message对象工厂?或者Message类应该有一些::createFromSomething()静态初始值设定项?

1 个答案:

答案 0 :(得分:0)

我会创建以下类:

  • ImapClient(GetFolders,SendMessage,Search)
  • FolderCollection
  • 文件夹(GetMessages)
  • MessageCollection
  • 消息