当我们在写本人在经历了多次重复操作之后决定改进一下传统php函数参数传递方法,使用数组作为参数,请看下面的例子.
先看一个传统的自定义函数
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<OL class=dp-xml><LI class=alt><SPAN><SPAN>/** </SPAN></SPAN><LI class=""><SPAN>* @Purpose: 插入文本域 </SPAN><LI class=alt><SPAN>* @Method Name: addInput() </SPAN><LI class=""><SPAN>* @Parameter: str $title 表单项标题 </SPAN><LI class=alt><SPAN>* @Parameter: str $name 元素名称 </SPAN><LI class=""><SPAN>* @Parameter: str $value 默认值 </SPAN><LI class=alt><SPAN>* @Parameter: str $type 类型,默认为text,可选password </SPAN><LI class=""><SPAN>* @Parameter: str $maxlength 最长输入 </SPAN><LI class=alt><SPAN>* @Parameter: str $readonly 只读 </SPAN><LI class=""><SPAN>* @Parameter: str $required 是否必填,默认为false,true为必填 </SPAN><LI class=alt><SPAN>* @Parameter: str $check 表单验证function(js)名称 </SPAN><LI class=""><SPAN>* @Parameter: str $id 元素id,无特殊需要时省略 </SPAN><LI class=alt><SPAN>* @Parameter: int $width 元素宽度,单位:象素 </SPAN><LI class=""><SPAN>* @Parameter: str $tip 元素提示信息 </SPAN><LI class=alt><SPAN>* @Return: </SPAN><LI class=""><SPAN>*/ </SPAN><LI class=alt><SPAN>function addInput($title,$name,$</SPAN><SPAN class=attribute><FONT color=#ff0000>value</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>""</FONT></SPAN><SPAN>,$</SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"text"</FONT></SPAN><SPAN>,$</SPAN><SPAN class=attribute><FONT color=#ff0000>maxlength</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"255"</FONT></SPAN><SPAN>,<br>$readonly,$</SPAN><SPAN class=attribute><FONT color=#ff0000>required</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"false"</FONT></SPAN><SPAN>,$check,$id,$width,$tip) </SPAN></SPAN><LI class=""><SPAN>{ </SPAN><LI class=alt><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= </SPAN><SPAN class=attribute-value><FONT color=#0000ff>"<li>n"</FONT></SPAN><SPAN>; </SPAN></SPAN><LI class=""><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= </SPAN><SPAN class=attribute-value><FONT color=#0000ff>"<label>"</FONT></SPAN><SPAN>.$title.":</SPAN><STRONG><FONT color=#006699><SPAN class=tag></</SPAN><SPAN class=tag-name>label</SPAN><SPAN class=tag>></SPAN></FONT></STRONG><SPAN>n"; </SPAN></SPAN><LI class=alt><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= "</SPAN><STRONG><FONT color=#006699><SPAN class=tag><</SPAN><SPAN class=tag-name>input</SPAN></FONT></STRONG><SPAN> name="</SPAN><SPAN class=attribute-value><FONT color=#0000ff>".$name."</FONT></SPAN><SPAN>" </SPAN><SPAN class=attribute><FONT color=#ff0000>value</FONT></SPAN><SPAN>="".$value."" </SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>=""<br>.$type."" </SPAN><SPAN class=attribute><FONT color=#ff0000>maxlength</FONT></SPAN><SPAN>="".$maxlength."" </SPAN><SPAN class=attribute><FONT color=#ff0000>required</FONT></SPAN><SPAN>="".$required."" </SPAN><SPAN class=attribute><FONT color=#ff0000>check</FONT></SPAN><SPAN>=""<br>.$check."" </SPAN><SPAN class=attribute><FONT color=#ff0000>id</FONT></SPAN><SPAN>="".$id."" </SPAN><SPAN class=attribute><FONT color=#ff0000>class</FONT></SPAN><SPAN>="input" ".$readonly." </SPAN><SPAN class=attribute><FONT color=#ff0000>style</FONT></SPAN><SPAN>="width:".$width.<br>"px;" </SPAN><SPAN class=attribute><FONT color=#ff0000>showName</FONT></SPAN><SPAN>="".$title."" </SPAN><SPAN class=tag><STRONG><FONT color=#006699>/></FONT></STRONG></SPAN><SPAN> "; </SPAN></SPAN><LI class=""><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= "</SPAN><STRONG><FONT color=#006699><SPAN class=tag><</SPAN><SPAN class=tag-name>span</SPAN></FONT></STRONG><SPAN> class="</SPAN><SPAN class=attribute-value><FONT color=#0000ff>tip</FONT></SPAN><SPAN>"</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>".$tip."</SPAN><STRONG><FONT color=#006699><SPAN class=tag></</SPAN><SPAN class=tag-name>span</SPAN><SPAN class=tag>></SPAN></FONT></STRONG><SPAN>n"; </SPAN></SPAN><LI class=alt><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= </SPAN><SPAN class=attribute-value><FONT color=#0000ff>"</li>n"</FONT></SPAN><SPAN>; </SPAN></SPAN><LI class=""><SPAN>} </SPAN></LI></OL>这是我写的表单类中一个插入文本框的函数.
PHP函数参数传递方法的调用方法为
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<OL class=dp-xml><LI class=alt><SPAN><SPAN>$form-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>addInput("编码","field0","","text",3,""); </SPAN></SPAN></LI></OL>在开始的时候只预留了$title,$name,$value,$type,$maxlength,$readonly等参数,经过一段时间的使用,发现这些基本参数无法满足需求,文本框需要有js验证,需要定义CSS样式,需要增加提示信息等...
增加了$required,$check,$id,$width,$tip等参数之后发现以前所有调用此函数的地方都需要修改,增加了很多工作量.
PHP函数参数传递方法的调用方法变成
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<OL class=dp-xml><LI class=alt><SPAN><SPAN>$form-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>addInput("编码","field0","","text",3,"","true",""<br>,"",100,"提示:编号为必填项,只能填写3位"); </SPAN></SPAN></LI></OL>如果使用这个函数的地方很多的话一个一个改确实需要很长时间.
下面是我改进之后的函数
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<OL class=dp-xml><LI class=alt><SPAN><SPAN>function addInput($a) </SPAN></SPAN><LI class=""><SPAN>{ </SPAN><LI class=alt><SPAN> if(is_array($a)) </SPAN><LI class=""><SPAN> { </SPAN><LI class=alt><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>title</FONT></SPAN><SPAN> = $a['title']; </SPAN></SPAN><LI class=""><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN> = $a['name']; </SPAN></SPAN><LI class=alt><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>value</FONT></SPAN><SPAN> = $a['value'] ? $a['value'] : ""; </SPAN></SPAN><LI class=""><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN> = $a['type'] ? $a['type'] : "text"; </SPAN></SPAN><LI class=alt><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>maxlength</FONT></SPAN><SPAN> = $a['maxlength'] ? $a['maxlength'] : "255"; </SPAN></SPAN><LI class=""><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>readonly</FONT></SPAN><SPAN> = $a['readonly'] ? $a['readonly'] : ""; </SPAN></SPAN><LI class=alt><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>required</FONT></SPAN><SPAN> = $a['required'] ? $a['required'] : "false"; </SPAN></SPAN><LI class=""><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>check</FONT></SPAN><SPAN> = $a['check']; </SPAN></SPAN><LI class=alt><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>id</FONT></SPAN><SPAN> = $a['id']; </SPAN></SPAN><LI class=""><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>width</FONT></SPAN><SPAN> = $a['width']; </SPAN></SPAN><LI class=alt><SPAN> $</SPAN><SPAN class=attribute><FONT color=#ff0000>tip</FONT></SPAN><SPAN> = $a['tip']; </SPAN></SPAN><LI class=""><SPAN> } </SPAN><LI class=alt><SPAN> $title,$name,$</SPAN><SPAN class=attribute><FONT color=#ff0000>value</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>""</FONT></SPAN><SPAN>,$</SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"text"</FONT></SPAN><SPAN>,$</SPAN><SPAN class=attribute><FONT color=#ff0000>maxlength</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"255"</FONT></SPAN><SPAN>,$readonly,$</SPAN><SPAN class=attribute><FONT color=#ff0000>required</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"false"</FONT></SPAN><SPAN>,$check,$id,$width,$tip </SPAN></SPAN><LI class=""><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= </SPAN><SPAN class=attribute-value><FONT color=#0000ff>"<li>n"</FONT></SPAN><SPAN>; </SPAN></SPAN><LI class=alt><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= </SPAN><SPAN class=attribute-value><FONT color=#0000ff>"<label>"</FONT></SPAN><SPAN>.$title.":</SPAN><STRONG><FONT color=#006699><SPAN class=tag></</SPAN><SPAN class=tag-name>label</SPAN><SPAN class=tag>></SPAN></FONT></STRONG><SPAN>n"; </SPAN></SPAN><LI class=""><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= "</SPAN><STRONG><FONT color=#006699><SPAN class=tag><</SPAN><SPAN class=tag-name>input</SPAN></FONT></STRONG><SPAN> name="</SPAN><SPAN class=attribute-value><FONT color=#0000ff>".$name."</FONT></SPAN><SPAN>" </SPAN><SPAN class=attribute><FONT color=#ff0000>value</FONT></SPAN><SPAN>="".$value."" </SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>="".$type."" </SPAN><SPAN class=attribute><FONT color=#ff0000>maxlength</FONT></SPAN><SPAN>="".$maxlength."" </SPAN><SPAN class=attribute><FONT color=#ff0000>required</FONT></SPAN><SPAN>="".$required."" </SPAN><SPAN class=attribute><FONT color=#ff0000>check</FONT></SPAN><SPAN>="".$check."" </SPAN><SPAN class=attribute><FONT color=#ff0000>id</FONT></SPAN><SPAN>="".$id."" </SPAN><SPAN class=attribute><FONT color=#ff0000>class</FONT></SPAN><SPAN>="input" ".$readonly." </SPAN><SPAN class=attribute><FONT color=#ff0000>style</FONT></SPAN><SPAN>="width:".$width."px;" </SPAN><SPAN class=attribute><FONT color=#ff0000>showName</FONT></SPAN><SPAN>="".$title."" </SPAN><SPAN class=tag><STRONG><FONT color=#006699>/></FONT></STRONG></SPAN><SPAN> "; </SPAN></SPAN><LI class=alt><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= "</SPAN><STRONG><FONT color=#006699><SPAN class=tag><</SPAN><SPAN class=tag-name>span</SPAN></FONT></STRONG><SPAN> class="</SPAN><SPAN class=attribute-value><FONT color=#0000ff>tip</FONT></SPAN><SPAN>"</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>".$tip."</SPAN><STRONG><FONT color=#006699><SPAN class=tag></</SPAN><SPAN class=tag-name>span</SPAN><SPAN class=tag>></SPAN></FONT></STRONG><SPAN>n"; </SPAN></SPAN><LI class=""><SPAN> $this-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>form </SPAN><SPAN class=attribute><FONT color=#ff0000>.</FONT></SPAN><SPAN>= </SPAN><SPAN class=attribute-value><FONT color=#0000ff>"</li>n"</FONT></SPAN><SPAN>; </SPAN></SPAN><LI class=alt><SPAN>} </SPAN></LI></OL>调用方法变为
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<OL class=dp-xml><LI class=alt><SPAN><SPAN>$form-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>addInput( </SPAN></SPAN><LI class=""><SPAN> array( </SPAN><LI class=alt><SPAN> 'title' = "编码", </SPAN><LI class=""><SPAN> 'name' = "field0", </SPAN><LI class=alt><SPAN> 'maxlength' = 3, </SPAN><LI class=""><SPAN> 'required' = "true", </SPAN><LI class=alt><SPAN> 'width' = 100, </SPAN><LI class=""><SPAN> 'tip' = "提示:编号为必填项,只能填写3位", </SPAN><LI class=alt><SPAN> ) </SPAN><LI class=""><SPAN>); </SPAN></LI></OL>
经过前后PHP函数参数传递方法的对比可以发现:
传统的函数在需要扩展的时候改动量大,使用的时候必须按参数的顺序写,很容易出错.
改进后的函数扩展的时候可以随时增加新参数,只需要在调用时增加对应的数组键值,每个参数都一目了然,无需考虑顺序,代码可读性增强.
不过PHP函数参数传递方法的改进还是有缺点的,代码量增大了,需要程序员多写很多键值,还有就是函数中判断语句和三元运算语句可能会影响效率.
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号