首頁  >  文章  >  後端開發  >  如何優化php函數參數傳遞的實用技巧

如何優化php函數參數傳遞的實用技巧

伊谢尔伦
伊谢尔伦原創
2017-06-26 14:13:351309瀏覽

當我們在寫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[&#39;title&#39;];  
        $name        = $a[&#39;name&#39;];  
        $value        = $a[&#39;value&#39;] ? $a[&#39;value&#39;] : "";  
        $type        = $a[&#39;type&#39;] ? $a[&#39;type&#39;] : "text";  
        $maxlength    = $a[&#39;maxlength&#39;] ? $a[&#39;maxlength&#39;] : "255";  
        $readonly    = $a[&#39;readonly&#39;] ? $a[&#39;readonly&#39;] : "";  
        $required    = $a[&#39;required&#39;] ? $a[&#39;required&#39;] : "false";  
        $check        = $a[&#39;check&#39;];  
        $id        = $a[&#39;id&#39;];  
        $width        = $a[&#39;width&#39;];  
        $tip        = $a[&#39;tip&#39;];  
    }  
    $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(  
        &#39;title&#39; = "编码",  
        &#39;name&#39; = "field0",  
        &#39;maxlength&#39; = 3,  
        &#39;required&#39; = "true",  
        &#39;width&#39; = 100,  
        &#39;tip&#39; = "提示:编号为必填项,只能填写3位",  
    )  
);

經過前後PHP函數參數傳遞方法的比較可以發現:

傳統的函數在需要擴充的時候改動量大,使用的時候必須按參數的順序寫,很容易出錯.

改進後的函數擴展的時候可以隨時增加新參數,只需要在調用時增加對應的數組鍵值,每個參數都一目了然,無需考慮順序,程式碼可讀性增強.

不過PHP函數參數傳遞方法的改進還是有缺點的,程式碼量增大了,需要程式設計師多寫很多鍵值,還有就是函數中判斷語句三元運算語句可能會影響效率.

以上是如何優化php函數參數傳遞的實用技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn