PHP函数参数传递方法的具体改进技巧分享
创始人
2024-06-12 20:00:20
0次

当我们在写PHP代码的时候,经常会需要对代码进行多次的升级更改等,这样来回不断的重复修改参数,会使我们的整个程序性能降低,并增加了不少的工作量。我们今天就为大家介绍一下是使用数组进行PHP函数参数传递方法的赶紧。

#t#本人在经历了多次重复操作之后决定改进一下传统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 .= "
  20. \n";  
  21.     $this->form .= ".$title.":\n";  
  22.     $this->form .= " name=\"".$name."\" value=\"".$value."\" type=\""
    .$type."\" maxlength=\"".$maxlength."\" required=\"".$required."\" check=\""
    .$check."\" id=\"".$id."\" class=\"input\" ".$readonly." style=\"width:".$width.

    "px;\" showName=\"".$title."\" /> ";  
  23.     $this->form .= " class=\"tip\">".$tip."\n";  
  24.     $this->form .= "
  25. \n";  
  26. } 

这是我写的表单类中一个插入文本框的函数.

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 .= "
  19. \n";  
  20.     $this->form .= ".$title.":\n";  
  21.     $this->form .= " 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 .= " class=\"tip\">".$tip."\n";  
  23.     $this->form .= "
  24. \n";  
  25. } 

调用方法变为

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

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...