改進一下傳統PHP函數參數傳遞方法,使用數組作為參數可以讓性能得到優化,請看下面的例子。
先看一個傳統的自定義函數:
/** * @Purpose: 插入文本域 * @Method Name: addInput() * @Parameter: str $title 表單項標題 * @Parameter: str $name 元素名稱 * @Parameter: str $value 默認值 * @Parameter: str $type 類型,默認為text,可選password * @Parameter: str $maxlength 最長輸入 * @Parameter: str $readonly 只讀 * @Parameter: str $required 是否必填,默認為false,true為必填 * @Parameter: str $check 表單驗證function(js)名稱 * @Parameter: str $id 元素id,無特殊需要時省略 * @Parameter: int $width 元素寬度,單位:象素 * @Parameter: str $tip 元素提示信息 * @Return: */ function addInput($title,$name,$value="",$type="text",$maxlength="255",$readonly,$required="false",$check,$id,$width,$tip) { $this->form .= "<li>/n"; $this->form .= "<label>".$title.":</label>/n"; $this->form .= "<input name=/"".$name."/" value=/"".$value."/" type=/"".$type."/" maxlength=/"".$maxlength."/" required=/"".$required."/" check=/"".$check."/" id=/"".$id."/" class=/"input/" ".$readonly." style=/"width:".$width."px;/" showName=/"".$title."/" /> "; $this->form .= "<span class=/"tip/">".$tip."</span>/n"; $this->form .= "</li>/n"; }
這是我寫的表單類中一個插入文本框的函數.
PHP函數參數傳遞方法的調用方法為
$form->addInput("編碼","field0","","text",3,"");
在開始的時候只預留了$title,$name,$value,$type,$maxlength,$readonly等參數,經過一段時間的使用,發現這些基本參數無法滿足需求,文本框需要有js驗證,需要定義CSSyangshi_10628_1.html' target='_blank'>CSS樣式,需要增加提示信息等...
增加了$required,$check,$id,$width,$tip等參數之后發現以前所有調用此函數的地方都需要修改,增加了很多工作量.
PHP函數參數傳遞方法的調用方法變成
$form->addInput("編碼","field0","","text",3,"","true","","",100,"提示:編號為必填項,只能填寫3位");
如果使用這個函數的地方很多的話一個一個改確實需要很長時間.
改進之后的函數:
function addInput($a) { if(is_array($a)) { $title = $a['title']; $name = $a['name']; $value = $a['value'] ? $a['value'] : ""; $type = $a['type'] ? $a['type'] : "text"; $maxlength = $a['maxlength'] ? $a['maxlength'] : "255"; $readonly = $a['readonly'] ? $a['readonly'] : ""; $required = $a['required'] ? $a['required'] : "false"; $check = $a['check']; $id = $a['id']; $width = $a['width']; $tip = $a['tip']; } $title,$name,$value="",$type="text",$maxlength="255",$readonly,$required="false",$check,$id,$width,$tip $this->form .= "<li>/n"; $this->form .= "<label>".$title.":</label>/n"; $this->form .= "<input name=/"".$name."/" value=/"".$value."/" type=/"".$type."/" maxlength=/"".$maxlength."/" required=/"".$required."/" check=/"".$check."/" id=/"".$id."/" class=/"input/" ".$readonly." style=/"width:".$width."px;/" showName=/"".$title."/" /> "; $this->form .= "<span class=/"tip/">".$tip."</span>/n"; $this->form .= "</li>/n"; }
調用方法變為
$form->addInput( array( 'title' = "編碼", 'name' = "field0", 'maxlength' = 3, 'required' = "true", 'width' = 100, 'tip' = "提示:編號為必填項,只能填寫3位", ) );
經過前后PHP函數參數傳遞方法的對比可以發現:
傳統的函數在需要擴展的時候改動量大,使用的時候必須按參數的順序寫,很容易出錯.
改進后的函數擴展的時候可以隨時增加新參數,只需要在調用時增加對應的數組鍵值,每個參數都一目了然,無需考慮順序,代碼可讀性增強.
不過PHP函數參數傳遞方法的改進還是有缺點的,代碼量增大了,需要程序員多寫很多鍵值,還有就是函數中判斷語句和三元運算語句可能會影響效率。
相關文章推薦:
php函數與傳遞參數實例分析
PHP在函數體中傳遞與接收參數
以上就是php中使用數組作為參數讓性能得到優化的方法介紹(附代碼)的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答