脚本宝典收集整理的这篇文章主要介绍了使用PHP将多个变量传递给函数的最佳实践是什么,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道传递这样的参数或使用数组更好吗?
我更喜欢这样
fun(array( 'par1' => 'x','par2' => 'y',..... ) )
绝缘
func($par1,$par2,$par3,...);
你怎么看?
固定订单
<?PHP function fn($a1,$a2,$a3,$a4,$a5,$a6 = null,$a7 = "foo",$a8 = "bar",array $a9 = array()) {}
优点
缺点
>固定订单
排列
另一方面,如果订单总是有些不同,请使用数组thingy.
<?PHP function fn($a1,array $optional = array()) {} fn("","",array("arg9" => false));
优点
>易于使用
>没有固定的订单
缺点
>不是自我记录
>验证成本高昂
参数对象
参数对象当然也是一种有效的解决方案,但处理起来却不切实际:
<?PHP class Args { public $arg5 = "foo"; public $arg6 = "bar"; public $arg7 = null; public $arg8 = array(); public $arg9 = true; } function fn($arg1,$arg2,$arg3,$arg4,$arg5,\Args $optional = null) {} // Now comes the imPRactical part. $optional = new Args(); $optional->arg9 = false; fn("",$optional);
优点
>自我记录
>没有固定的订单
缺点
>非常不切实际
>验证成本高昂
数组到参数对象
你可以混合两种方法:
<?PHP class Args { public $arg5 = "foo"; public $arg6 = "bar"; public $arg7 = null; public $arg8 = array(); public $arg9 = true; public __construct($args) { foreach ($args as $proPErty => $value) { $this->"set{$property}"($value); } } public function setArg5($value) { if (is_string($value) === false) { throw new \InvalidargumentException; } $this->arg5 = $value; } // and so on ... } function fn($arg1,array $optional = null) { if (isset($optional)) { $optional = new Args($optional); } // ... } fn("",array("arg9" => false));
优点
>简单验证
>分离关注
>容易传递
>易于处理
>可以记录API
缺点
>仍然无法将其记录为固定的args方法
>验证成本高昂
VARiadics
PHP 5.6中有一个你可能会觉得有用的新功能,variadics:
<?PHP function fn($a1,...$optional) {}
优点
>非常快
>允许构建特殊的API(例如数据库预处理语句绑定)
缺点
>不容易记录
>验证成本高昂
命名参数
我们将来可能会看到named parameters.
以上是脚本宝典为你收集整理的使用PHP将多个变量传递给函数的最佳实践是什么全部内容,希望文章能够帮你解决使用PHP将多个变量传递给函数的最佳实践是什么所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。