在進行設置自動轉發,增刪來信規則,修改密碼等操做時,增長必須綁定手機而且驗證手機號的安全認證操做.在這個過程當中使用控制反轉的設計模式封裝一個單獨的類能夠靈活的複用代碼和調整邏輯前端
首先定義一個SecureTel的class類,這個類裏面提供全部業務方法.在生成SecureTel對象的時候,須要使用框架內提供的一個生成對象的方法來操做,不能直接去new這個類,這個方法就是Sina_Application::resource('securetel'),在這個生成器中,會去調用SecureTel類中的createResource方法,而且會把配置文件中對應該類的參數傳遞進去.數據庫
SecureTel類就能夠在自身的createResource方法中進行new本身這個對象,而且能夠把配置文件的參數設置到本身的屬性裏,在其餘的方法中能夠根據屬性進行業務判斷設計模式
經過上面的處理,能夠靈活的使用這個類在各個接口的控制器代碼中,達到複用代碼的目的.而且能夠直接在配置文件中對這個類裏面的屬性進行控制,方便在進行業務調整時不去修改類內部的邏輯安全
上面是在代碼層面的設計,下面是在業務的層面介紹一下
1.請求過來後,由於在這個邏輯中是不會有高併發的狀況,直接查詢數據庫綁定手機表,斷定是否已經綁定手機.若是沒有綁定手機直接返回對應的錯誤碼
2.綁定了手機狀況下,要去memcache查詢是否已經驗證過了,key就是"c:xxxx@xxxx.com",這個key的過時時間是一天,若是有值,說明驗證過了,沒值就返回另外一個錯誤碼
3.在配置文件中,能夠配置是否開啓這個手機驗證功能,防止在短信接口不能用時,影響用戶操做,能夠直接關閉全部業務的驗證功能.這個配置對應
SecureTel類中的一個屬性,其餘方法對這個屬性進行斷定
4.在配置文件能夠配置驗證後的過時時間,這個在測試中能夠進行靈活修改,讓測試人員短時間能夠屢次測試.
5.前端根據不一樣的錯誤碼,進行不一樣的彈窗,綁定手機的彈窗和驗證手機的彈窗併發