为参数创建一个具有预定义值的php函数


Creating a php function with predefined values for a parameter

假设我有以下方法:

public function chooseCar($car)
{
    return 'You chose this car: ' . $car;
}

我需要为$car参数中可以传递给chooseCar的内容设置特定的值,例如,让开发人员在"Mercedes"、"BMW"answers"Ford"之间进行选择,这在php中可行吗?

您可以尝试以下代码。

public function chooseCar($car)
{   
    $predefined_vals = array( 'Mercedes', 'BMW', 'Ford'); 
    if(in_array($car,$predefined_vals)){
       return 'You chose this car: ' . $car;        
    }else{
       return "undefined values chosen"
    }
}

我有一种方法。

在函数本身中,创建一个数组。

并检查参数$car是否在_array()中

public function chooseCar($car = '') {
 $allowedCars = array('Mercedes', 'BMW', 'Ford');
 if (! in_array($car, $allowedCars)) {
  return FALSE;
 }
 return 'You chose this car: ' . $car;
}

您可以检查参数是否为"可接受值",如下所示:

var $acceptableCars = [ 'Mercedes', 'BMW', 'Ford'];
function chooseCar($car) {
  if (in_array($car, $acceptableCars)) {
    return 'You chose this car: ' . $car;
  }
  throw new Exception('Not a valid car');
}

类似的东西可以帮助您获得可用汽车的固定列表:

<?php
class Cars
{
    private $availableCars = ['Merc', 'Ford'];
    public function chooseCar($car)
    {
        if (in_array($car, $this->availableCars)) {
            return 'You chose this car: ' . $car;
        }
        throw new 'Exception('Invalid car chosen!');
    }
}

正如有人建议的那样,使用枚举,这样你的程序会设计得更好,并且你确信你的函数是用car正确调用的,而不是其他东西:

class CarBrand extends SplEnum {
  // No value, then undefined
  const __default = 1;
  const MERCEDES = 1;
  const AUDI = 2;
}
function chooseCar(CarBrand $car) {
    if (CarBrand::MERCEDES == $car) {
        echo "Mercedes.'n";
    } elseif (CarBrand::AUDI == $car) {
        echo "Audi.'n";
    }
}
$car = new CarBrand(CarBrand::MERCEDES);
chooseCar($car);

通过下面的代码,如果你知道的汽车类型

public function chooseCar($car)
{
 switch($car)
 {
  case 'BMW':
    return 'You chose this car: ' . $car;
    break;
  case 'Ford':
    return 'You chose this car: ' . $car;
    break;
  default:
  return 'Soory, Your car not exist in the list';
 }    
}

您也可以使用php in_array()或array_search()函数,如其他答案中所述。