Switch by class (instanceof) in PHP
For a polymorphic switch with instanceof
which considers inheritance:
switch(true) {
case $objectToTest instanceof TreeRequest:
echo "tree request";
break;
case $objectToTest instanceof GroundRequest:
echo "ground request";
break;
}
For a switch where the class name should match exactly:
$class = get_class($objectToTest);
switch($class) {
case 'TreeRequest':
echo "tree request";
break;
case 'GroundRequest':
echo "ground request";
break;
}
The following is more correct:
$class = get_class($objectToTest);
switch($class) {
case TreeRequest::class:
echo "tree request";
break;
case GroundRequest::class:
echo "ground request";
break;
}
This way namespaces are properly compared (you don't have to type them out) and if anything changes such as the namespace or class name you'll get a decent IDE error informing you that your code is broken.