首页 > php框架 > PHP函数参数传递方法的具体改进技巧分享

PHP函数参数传递方法的具体改进技巧分享

当我们在写
本人在经历了多次重复操作之后决定改进一下传统PHP函数参数传递方法,使用数组作为参数,请看下面的例子.

先看一个传统的自定义函数

  1. /**  
  2. * @Purpose:     插入文本域  
  3. * @Method Name: addInput()  
  4. * @Parameter:    str $title        表单项标题  
  5. * @Parameter:    str $name        元素名称  
  6. * @Parameter:    str $value        默认值  
  7. * @Parameter:    str $type        类型,默认为text,可选password  
  8. * @Parameter:    str $maxlength        最长输入  
  9. * @Parameter:    str $readonly        只读  
  10. * @Parameter:    str $required        是否必填,默认为false,true为必填  
  11. * @Parameter:    str $check        表单验证function(js)名称  
  12. * @Parameter:    str $id            元素id,无特殊需要时省略  
  13. * @Parameter:    int $width        元素宽度,单位:象素  
  14. * @Parameter:    str $tip        元素提示信息  
  15. * @Return:        
  16. */  
  17. function addInput($title,$name,$value=,$type=text,$maxlength=255,
    $readonly,$
    required=false,$check,$id,$width,$tip)  
  18. {  
  19.     $this->form .<li>n;  
  20.     $this->form .<label>.$title.:</label>n;  
  21.     $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. /> ;  
  22.     $this->form .<span class=tip>.$tip.</span>n;  
  23.     $this->form .</li>n;  

这是我写的表单类中一个插入文本框的函数.PHP函数参数传递方法的调用方法为

  1. $form->addInput(编码,field0,,text,3,); 

在开始的时候只预留了$title,$name,$value,$type,$maxlength,$readonly等参数,经过一段时间的使用,发现这些基本参数无法满足需求,文本框需要有js验证,需要定义CSS样式,需要增加提示信息等...

增加了$required,$check,$id,$width,$tip等参数之后发现以前所有调用此函数的地方都需要修改,增加了很多工作量.

PHP函数参数传递方法的调用方法变成

  1. $form->addInput(编码,field0,,text,3,,true,
    ,,100,提示:编号为必填项,只能填写3位);  

如果使用这个函数的地方很多的话一个一个改确实需要很长时间.

下面是我改进之后的函数

  1. function addInput($a)  
  2. {  
  3.     if(is_array($a))  
  4.     {  
  5.         $title        = $a[title];  
  6.         $name        = $a[name];  
  7.         $value        = $a[value] ? $a[value] : ;  
  8.         $type        = $a[type] ? $a[type] : text;  
  9.         $maxlength    = $a[maxlength] ? $a[maxlength] : 255;  
  10.         $readonly    = $a[readonly] ? $a[readonly] : ;  
  11.         $required    = $a[required] ? $a[required] : false;  
  12.         $check        = $a[check];  
  13.         $id        = $a[id];  
  14.         $width        = $a[width];  
  15.         $tip        = $a[tip];  
  16.     }  
  17.     $title,$name,$value=,$type=text,$maxlength=255,$readonly,$required=false,$check,$id,$width,$tip  
  18.     $this->form .<li>n;  
  19.     $this->form .<label>.$title.:</label>n;  
  20.     $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. /> ;  
  21.     $this->form .<span class=tip>.$tip.</span>n;  
  22.     $this->form .</li>n;  

调用方法变为

  1. $form->addInput(  
  2.     array(  
  3.         title = 编码,  
  4.         name = field0,  
  5.         maxlength = 3,  
  6.         required = true,  
  7.         width = 100,  
  8.         tip = 提示:编号为必填项,只能填写3位,  
  9.     )  
  10. );  

经过前后PHP函数参数传递方法的对比可以发现:

传统的函数在需要扩展的时候改动量大,使用的时候必须按参数的顺序写,很容易出错.

改进后的函数扩展的时候可以随时增加新参数,只需要在调用时增加对应的数组键值,每个参数都一目了然,无需考虑顺序,代码可读性增强.

不过PHP函数参数传递方法的改进还是有缺点的,代码量增大了,需要程序员多写很多键值,还有就是函数中判断语句和三元运算语句可能会影响效率.


本文地址:http://www.phprm.com/frame/php1003642.html

转载随意,但请附上文章地址:-)

标签:none

发表留言