當我們在寫PHP程式碼的時候,常常會需要對程式碼進行多次的升級變更等,這樣來回不斷的重複修改參數,會使我們的整個程式效能降低,並增加了不少的工作量。我們今天就來為大家介紹一下是使用陣列進行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驗證,需要定義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中文網其他相關文章!