亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

如何使用php的函數變量數組實現代碼結構的改變

2020-03-22 20:19:37
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于如何使用php的函數變量數組實現代碼結構的改變(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

項目越做越大,代碼越來越亂,維護困難。原因很多吧。起初為了實現功能,并沒有注重代碼的結構,外包公司嘛。雖然公司的項目負責人一直考慮復用、封裝,但是我覺得基本上沒有達到想要的效果。因為整個代碼中沒有沒有用到設計模式,這樣結構肯定好不到哪去。雖然很多功能都封裝了,但是分層特別的亂,有種為了封裝而封裝的感覺。其實,很多東西我也不懂,但是寫完代碼之后,偶爾還是會去把代碼的結構稍微的修改修改,盡量的少給自己挖坑吧。

代碼結構的問題

接口有大量的方法,調用接口時需要使用 switch 進行判斷,大致結構如下:

private function makeXML($xmlName, $xmlNameParam) $requestData = null; switch ($xmlName) { // ... case sendOrder : $requestData = $this- sendOrder($xmlNameParam); break; case ecfareQuery : $requestData = $this- ecfareQuery($xmlNameParam); break; case getInterAV : $requestData = $this- getInterAV($xmlNameParam); break; // ... return $requestData;}

以上 case 中都是調用對應的方法來拼接接口所需的 XML 信息的。

方法的參數分別傳遞了拼接接口方法的名稱和參數。

這樣的判斷結構代碼感覺不好管理,增加一個方法方法,就需要增加一個 case 調用,而且看的時候也比較亂。

代碼結構的改進

因此進行了相關的改進,改進方式如下:

1、先定義一個方法數組,用于保存方法名,定義如下

protected $arr = [];html' target='_blank'>public function __construct() // 初始化接口方法 $this- arr = [ getAV = getAV , sendOrder = sendOrder , ecfareQuery = ecfareQuery , getInterAV = getInterAV , // ...}

將來該接口下有了新的方法,直接添加到數組里就可以了。這樣可以省去大量的 switch case 的判斷。

2、修改 switch 的結構,代碼如下:

private function makeXML($xmlName, $xmlNameParam) $requestData = null; $fun = $this- arr[$xmlName]; $requestData = $this- $fun($xmlNameParam); return $requestData;}

將 switch case 的結構改成了以數組下標的方式進行調用的方式。這樣就把所有的方法統一管理了起來。

以上思路來自于 MFC 框架對 Windows 消息的處理。

相當于 C 語言中的函數指針數組,或 C# 里的委托。

知識補充:

面向過程的函數變量(往上找的)

function come() { //定義com函數 echo 來了 p function go($name = jack ) { //定義go函數 echo $name. 走了 p function back($string) //定義back函數 echo 又回來了,$string p $func = come //聲明一個變量,將變量賦值為“come”$func(); //使用變量函數來調用函數come()$func = go //重新給變量賦值$func( Tom //使用變量函數來調用函數go()$func = back //重新給變量賦值$func( Lily //使用變量函數來調用函數back();

對于PHP中面向對象的方式如下(自己實現的):

 ?phpclass test public $arr = []; public function __construct() $this- arr = array( func1 = func1 , func2 = func2 , func3 = func3 , func4 = func4 , func5 = func5 , public function submit($func, $str) $f = $this- arr[$func]; $this- $f($str); static public function func1($str) print func1 . . $str . /n  static public function func2($str) print func2 . . $str . /n  public function func3($str) print func3 . . $str . /n  private function func4($str) print func4 . . $str . /n  private function func5($str) print func5 . . $str . /n $t = new test(); // 實例化類$f = $t- arr[ func1 test::$f( abc // func1 func2 是靜態方法$f = $t- arr[ func2 test::$f( abc $f = $t- arr[ func3 // func3 的調用$t- $f( abc // func4 func5 的調用需要使用 submit 方法進行分發$t- submit( func4 , abc $t- submit( func5 , bcd 

以上代碼的輸出結果如下:

func1 abcfunc2 abcfunc3 abcfunc4 abcfunc5 bcd

以上就是如何使用php的函數變量數組實現代碼結構的改變(附示例)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品一区二区| 日韩美女视频免费在线观看| 国产精品自拍视频| 日韩欧美aⅴ综合网站发布| 91麻豆国产精品| 久久免费精品日本久久中文字幕| 日韩精品999| 亚洲无限乱码一二三四麻| 欧美大片免费观看| 国产日韩av在线| 久久影视电视剧凤归四时歌| 国产欧美精品在线| 欧美在线不卡区| 亚洲免费小视频| 欧美日韩成人在线播放| 国产日韩av在线| 国产精品高潮呻吟久久av野狼| 欧美成人精品h版在线观看| 韩国三级日本三级少妇99| 亚洲人线精品午夜| 日韩二区三区在线| 亚洲理论电影网| 欧美福利视频在线| 国产不卡av在线免费观看| 成人亚洲欧美一区二区三区| 97视频在线免费观看| 国产精品久久久久不卡| 久久国产精品久久久久| 国产精品女人网站| 欧美激情在线一区| 日韩美女激情视频| 成人黄色片网站| 日韩欧美在线视频日韩欧美在线视频| 成年人精品视频| 中文字幕免费国产精品| 国产精品日韩在线| 夜夜躁日日躁狠狠久久88av| 国产午夜精品免费一区二区三区| 精品高清一区二区三区| 日韩国产在线播放| 久久久之久亚州精品露出| 亚洲亚裔videos黑人hd| 成人www视频在线观看| 国产亚洲激情视频在线| 欧美日韩国产在线| 欧美日韩中文字幕综合视频| 中文字幕在线精品| 日韩禁在线播放| 亚洲午夜国产成人av电影男同| 欧美日韩在线视频一区二区| 亚洲激情自拍图| 日韩理论片久久| 亚洲国产私拍精品国模在线观看| 国产精品盗摄久久久| 久久成人精品电影| 亚洲激情电影中文字幕| 色综合伊人色综合网| 欧美大胆在线视频| 国产精品网红直播| 91性高湖久久久久久久久_久久99| 国产精品人人做人人爽| 欧美老女人bb| 欧美专区福利在线| 欧美在线亚洲在线| 国产精品一区二区久久精品| 欧美视频在线观看 亚洲欧| 欧美性少妇18aaaa视频| 成人一区二区电影| 欧美激情亚洲视频| 久久亚洲私人国产精品va| 国产极品精品在线观看| 欧美激情xxxxx| 色偷偷综合社区| 91精品国产高清久久久久久91| 国产国语刺激对白av不卡| 91高清视频免费| 国产男女猛烈无遮挡91| 亚洲美女免费精品视频在线观看| 亚洲人在线观看| 欧美最猛性xxxxx免费| 日韩在线欧美在线国产在线| 7777kkkk成人观看| 91po在线观看91精品国产性色| 国产美女搞久久| 91禁国产网站| 欧美视频在线观看免费| 久久综合88中文色鬼| 久久精品国产96久久久香蕉| 国产专区精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 欧美激情手机在线视频| 91精品国产自产在线观看永久| 一区二区欧美在线| 欧美老女人www| 亚洲影视中文字幕| 欧美一级片免费在线| 久久91亚洲精品中文字幕| 91欧美精品午夜性色福利在线| 国产精品看片资源| 欧美成aaa人片在线观看蜜臀| 欧美精品videosex极品1| 日韩女优人人人人射在线视频| 久久天天躁狠狠躁夜夜av| 丝袜美腿亚洲一区二区| 中国日韩欧美久久久久久久久| 欧美激情二区三区| 色偷偷91综合久久噜噜| 欧美午夜片欧美片在线观看| 精品少妇一区二区30p| 亚洲一区999| 亚洲free性xxxx护士hd| 欧洲成人免费aa| 欧美性猛交99久久久久99按摩| 国产精品极品美女在线观看免费| 欧美激情一级欧美精品| 久久久久北条麻妃免费看| 国产精品欧美亚洲777777| 在线播放日韩精品| 国产精品久久久久久久久免费看| 日韩a**中文字幕| 亚洲欧洲免费视频| 欧美尤物巨大精品爽| 97av在线视频免费播放| 午夜精品久久久久久久白皮肤| 国产综合在线观看视频| 国产成人精品a视频一区www| 97在线看免费观看视频在线观看| 国产精品中文字幕久久久| 欧美成人sm免费视频| 国产欧美欧洲在线观看| 国产精品一区av| 久久久精品在线观看| 欧美精品videofree1080p| 日韩电影免费在线观看| 国产精品一区二区久久国产| 成人欧美在线视频| 久久夜色精品亚洲噜噜国产mv| 亚洲精品久久久久久久久久久久久| 在线电影av不卡网址| 日韩精品在线免费观看| 国产精品视频白浆免费视频| 久久综合伊人77777| 亚洲天堂av在线免费| 18一19gay欧美视频网站| 精品久久久久久久久国产字幕| 综合国产在线观看| 久久久久久久国产精品视频| 91av国产在线| 亚洲一区二区中文字幕| 综合国产在线视频| 久久免费精品日本久久中文字幕| 中文字幕精品一区久久久久| 国产欧美韩国高清| 欧美性猛交xxxx偷拍洗澡| 国产精品美女久久久免费| 亚洲国产精彩中文乱码av| 欧美老肥婆性猛交视频| 日韩小视频在线| 成人网页在线免费观看| 欧美一级片久久久久久久| 久久人人看视频| 国自产精品手机在线观看视频| 精品偷拍一区二区三区在线看| 尤物yw午夜国产精品视频|