在函数参数中指定可选值和多个值

时间:2014-04-03 08:35:32

标签: php function optional-parameters

我想创建一个可以在参数中接受多个,可选和附加值的函数。

例如,我想要一个班级

class Pizza {
   public function addToppings($additional_toppings) 
   {
   }
}

我可以在我的程序中使用

$pizza1=new Pizza;
$pizza1->addToppings(SALAMI + HAM + BACON + ADDITIONAL_CHEESE);

$pizza2=new Pizza;
$pizza2->addToppings(HAM + PINEAPPLE + SAUSAGE);

其中浇头可以是任何组合,主题的选择属于预定义的集合。

如何实现addToppings功能?

我似乎记得在PHP中看到类似的东西,但我无法记住它。

另一方面,您会建议使用关联数组吗?

$pizza1->addToppings(array('salami','ham','bacon','additional_cheese'));
$pizza2->addToppings(array('ham','pineapple','sausage'));

这个选项似乎更简单,但我希望得到您选择的想法以及原因。感谢

修改

我现在记得有一个这样的PHP实现。

error_reporting函数允许指定多个加法error level constants作为参数,例如:

error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

只允许使用error_reporting()的实现,因为它是PHP的一部分,但不能重新创建吗?

1 个答案:

答案 0 :(得分:2)

你可以按照你建议的方式,传递数组,我的个人偏好就是这样做。但是PHP确实支持变量参数列表。

请参阅:http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list

使用变量参数,您可以使用func_num_args()func_get_args()函数。

以下是一个例子:

<?php

addToppings('Cheese', 'Ham', 'Peppers');

function addToppings()
{
    echo "Added " . func_num_args() . " toppings<br />";
    var_dump(func_get_args());
}

?>

编辑以包含有关error_reporting()功能

的OP编辑的回复

error_reporting()函数仍然只接受一个参数,错误常量之间的管道符号是bitwise operator,因此它们计算为单个值。您可以为您的功能实现类似的功能,但这与披萨类比似乎并不实用。

有关按位操作的更多信息,请参见Wikipedia