麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

如何使用php的函數(shù)變量數(shù)組實現(xiàn)代碼結(jié)構(gòu)的改變

2020-03-22 20:19:37
字體:
供稿:網(wǎng)友
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何使用php的函數(shù)變量數(shù)組實現(xiàn)代碼結(jié)構(gòu)的改變(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

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

代碼結(jié)構(gòu)的問題

接口有大量的方法,調(diào)用接口時需要使用 switch 進行判斷,大致結(jié)構(gòu)如下:

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 中都是調(diào)用對應(yīng)的方法來拼接接口所需的 XML 信息的。

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

這樣的判斷結(jié)構(gòu)代碼感覺不好管理,增加一個方法方法,就需要增加一個 case 調(diào)用,而且看的時候也比較亂。

代碼結(jié)構(gòu)的改進

因此進行了相關(guān)的改進,改進方式如下:

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

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

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

2、修改 switch 的結(jié)構(gòu),代碼如下:

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

將 switch case 的結(jié)構(gòu)改成了以數(shù)組下標的方式進行調(diào)用的方式。這樣就把所有的方法統(tǒng)一管理了起來。

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

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

知識補充:

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

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

對于PHP中面向?qū)ο?/u>的方式如下(自己實現(xiàn)的):

 ?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 是靜態(tài)方法$f = $t- arr[ func2 test::$f( abc $f = $t- arr[ func3 // func3 的調(diào)用$t- $f( abc // func4 func5 的調(diào)用需要使用 submit 方法進行分發(fā)$t- submit( func4 , abc $t- submit( func5 , bcd 

以上代碼的輸出結(jié)果如下:

func1 abcfunc2 abcfunc3 abcfunc4 abcfunc5 bcd

以上就是如何使用php的函數(shù)變量數(shù)組實現(xiàn)代碼結(jié)構(gòu)的改變(附示例)的詳細內(nèi)容,PHP教程

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产porn在线 | 亚洲成人福利网站 | 日韩视频―中文字幕 | 久久成年网站 | 久草干| 国产精品视频导航 | 在线高清中文字幕 | 日韩精品久久久久久久九岛 | 成人免费一区二区三区视频网站 | 欧美精品在线免费观看 | 午夜电影视频 | 91短视频版高清在线观看www | 性高湖久久久久久久久aaaaa | 成人免费观看49www在线观看 | 九九色网站| 久久毛片免费 | 久久久久久久久久久久久久久久久久 | 欧美亚洲国产一区二区三区 | 双性帝王调教跪撅打屁股 | 二区视频 | 精品国产一区二区三区在线观看 | h视频免费看 | 黄色毛片前黄 | 免费黄色入口 | 香蕉视频网站在线观看 | 日本精品一区二区 | 999精品久久久 | 久草在线视频免费播放 | 久久国产亚洲视频 | 国产艳妇av视国产精选av一区 | 久久人人97超碰国产公开结果 | 国产精品久久久乱弄 | 国产精品成人av片免费看最爱 | 成人国产在线视频 | 午夜视频在线免费播放 | 欧美不卡| 欧美aaaaa一级毛片在线 | 毛片一区二区三区四区 | 综合在线视频 | 国产精品999在线观看 | 久久久久久久久久久综合 |