2011-05-04 59 views
0

我現在很少有項目使用PHP IMAP擴展的imap_*功能集。可重複使用的郵件客戶端庫的代碼組織和設計

的任務是獲取郵件,從郵件主機做一些處理,並根據結果,將它們存儲在數據庫或回覆郵件(在IE中。無效的任務請求格式)

imap_*功能的工作是一個非常低級任務,有很多重複的代碼,所以我認識到我應該實現一些統一的lib,它將覆蓋imap函數,並讓我在高級的,定義明確的類/接口/對象工廠等上工作。

問題是我應該如何爲此任務組織類/代碼?我知道,設計糟糕的庫比沒有圖書館在所有:)最壞

[編輯]

我最初的想法是創建Transport類,將包裹連接,隱藏郵箱手柄(的結果imap_open)內私人財產,並使用imap_*功能通過__call魔術。 Secod類將是AccessManager將使用Transport類和照顧郵件提取邏輯,並mayby第三Message對象工廠?或者Message類應該有一些::createFromSomething()靜態初始化器?

+0

什麼一直是你如何組織這個最初的想法?一個想法是繪製出你注意到的任何常見數據集合,並將它們組合成一個類。例如,您可以讓Message類保存與單條消息相關的數據,然後Server保存執行任何實際服務器交互以及服務器配置(主機,身份驗證)變量等的函數等。 – Fanis 2011-05-04 19:48:39

+0

我已經描述了我最初的想法有問題的機構 – canni 2011-05-04 20:24:10

回答

0

我將創建下列類:

  • ImapClient(GetFolders,SendMessage函數,搜索)
  • FolderCollection
  • 文件夾(的getMessages)
  • MessageCollection
  • 消息
+0

嗯...我完全忘記了*集合對象,感謝提示。 PS'IMAP' php ext不能通過郵箱句柄發送郵件('imap_mail()'只是有限的標準php'mail()'func)的包裝 – canni 2011-05-05 08:43:08

+0

很久以前我編碼php;) – jgauffin 2011-05-05 08:48:20

+0

建議的類佈局符合我的需求,thx :) – canni 2011-05-06 07:42:50