Cambiar por clase(instanceof) en PHP
switch-statement (2)
Es posible reemplazar el bloque de if( .. instanceof ...), elseif(... instanceof ...), ...
con switch?
Por ejemplo:
<?php
$class = ..... //some class
if($class instanceof SomeClass) {
//do something
} elseif($class instanceof SomeAnotherClass) {
//do something else
}
Algo como esto:
$class = get_class($objectToTest);
switch($class) {
case ''TreeRequest'':
echo "tree request";
break;
case ''GroundRequest'':
echo "ground request";
break;
}
O esto:
switch(true) {
case $objectToTest instanceof TreeRequest:
echo "tree request";
break;
case $objectToTest instanceof GroundRequest:
echo "ground request";
break;
}
Lo siguiente es más correcto:
$class = get_class($objectToTest);
switch($class) {
case TreeRequest::class:
echo "tree request";
break;
case GroundRequest::class:
echo "ground request";
break;
}
De esta manera, los espacios de nombres se comparan correctamente (no tiene que escribirlos) y si algo cambia, como el espacio de nombres o el nombre de la clase, obtendrá un error IDE decente que le informa que su código está roto.