當我們在寫本人在經曆了多次重複操作之後決定改進一下傳統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 .= "
- n";
- $this->form .= "".$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 .= "
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 .= "
- n";
- $this->form .= "".$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 .= "
n";
- }
調用方法變為
- $form->addInput(
- array(
- 'title' = "編碼",
- 'name' = "field0",
- 'maxlength' = 3,
- 'required' = "true",
- 'width' = 100,
- 'tip' = "提示:編號為必填項,只能填寫3位",
- )
- );
經過前後PHP函數參數傳遞方法的對比可以發現:
傳統的函數在需要擴充的時候改動量大,使用的時候必須按參數的順序寫,很容易出錯.
改進後的函數擴充的時候可以隨時增加新參數,只需要在調用時增加對應的數組索引值,每個參數都一目瞭然,無需考慮順序,代碼可讀性增強.
不過PHP函數參數傳遞方法的改進還是有缺點的,代碼量增大了,需要程式員多寫很多索引值,還有就是函數中判斷語句和三元運算語句可能會影響效率.
http://www.bkjia.com/PHPjc/446329.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446329.htmlTechArticle當我們在寫 本人在經曆了多次重複操作之後決定改進一下傳統PHP函數參數傳遞方法,使用數組作為參數,請看下面的例子. 先看一個傳統的自...