首頁  >  文章  >  後端開發  >  php中使用陣列作為參數讓效能得到最佳化的方法介紹(附程式碼)

php中使用陣列作為參數讓效能得到最佳化的方法介紹(附程式碼)

不言
不言原創
2018-08-02 17:16:543078瀏覽

我們在寫php程式碼的時候,可能經常會需要對程式碼進行升級和更改,這樣頻繁的操作,不僅會增加我們的工作量而且也會讓我們的整個程式的效能降低,所以,下面的這篇文章跟大家分享一個使用陣列進行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在函數體中傳遞與接收參數

以上是php中使用陣列作為參數讓效能得到最佳化的方法介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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