近期在寫rest接口時,發如今接口中大量使用了elseif switch...等狀態判斷語句,爲了減小這樣的重複語句,增長代碼可讀性,經朋友建議選擇使用設計模式之狀態模式對代碼進行改造。在改造過程當中遇到一個問題,php中抽象類是否能夠繼承具體類,搜索了一番沒有滿意的答案,因而本身測試,下面是本身的測試例子。php
//基類Rest <?php class Rest{ /*http head信息*/ Const HTTP_OK = '200'; Const HTTP_CREATED = '201';/ Const HTTP_Accepted = '202'; Const HTTP_NoContent = '204'; Const HTTP_InvalidRequest = '400'; Const HTTP_Unauthorized = '401';/。 Const HTTP_Forbidden = '403'; Const HTTP_NotFound = '404'; Const HTTP_NotAcceptable = '406'; } //abstract 抽象類 abstract class myAbstract extends Rest{ //抽象類方法(注意抽象類方法以 ;結束,沒有具體操做) public abstract function first(); } //抽象類子類 class chrild extends myAbstract{ //重寫抽象類方法(注意繼承抽象類的子類必須重寫抽象類中的全部抽象方法) public function first(){ echo parent::HTTP_OK; } } //實例化子類 $test = new chrild(); $test->first(); //輸出結果爲 200
重結果上看,抽象類myAbstract確實繼承了具體類Rest,實時證實抽象類是能夠繼承具體類的。 分享的是本人開發過程當中的一點經驗,如有不對的地方,歡迎指點。設計模式