Включение функции с несколькими параметрами

Когда у меня есть Car экземпляр, который расширяет VehicleType

abstract class VehicleType {

}

class Car extends VehicleType {

}/**
* @var VehicleType $vehicleType
*/
private $vehicleType;

И $vehicleType переменная может быть любым экземпляром VehicleType и я хочу сделать функцию переключения на это, как это:

$vehicleType = new Car();

switch (is_a($vehicleType, get_class($vehicleType))) {
...
}

По какому параметру прослушивает функция переключения? Могу ли я сделать что-то вроде этого сейчас:

switch (is_a($vehicleType, get_class($vehicleType))) {
case "Car": {
//Its now a Car
}
case "Motorcyle": {
//Its now a motorcycle
}
//etc
}

1

Решение

Ты нуждаешься в этом:

switch (get_class($vehicleType))) { //it will get class name of $vehicleType
case "Car": {   //match if $vehicleType is Car
//Its now a Car
break;
}
case "Motorcyle": {   //match if $vehicleType is Motorcyle
//Its now a motorcycle
break;
}
//etc
}
2

Другие решения

is_a возвращает логическое значение, поэтому вам нужно выполнить проверку if-else.

Как это:

if (is_a($vehicleType, "Car")) {
//It's now a Car
} else if (is_a($vehicleType, "Motorcyle")) {
//It's now a motorcycle
} else {
//It's something else
}
1

По вопросам рекламы [email protected]