php switch-statement instanceof

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.