Il est possible de remplacer le bloc de if( .. instanceof ...), elseif(... instanceof ...), ...
par interrupteur?
Par exemple:
<?php
$class = ..... //some class
if($class instanceof SomeClass) {
//do something
} elseif($class instanceof SomeAnotherClass) {
//do something else
}
Ce qui suit est plus correct:
$class = get_class($objectToTest);
switch($class) {
case TreeRequest::class:
echo "tree request";
break;
case GroundRequest::class:
echo "ground request";
break;
}
De cette façon, les espaces de noms sont correctement comparés (vous n'avez pas besoin de les taper) et si quelque chose change comme l'espace de noms ou le nom de classe, vous obtiendrez une erreur IDE IDE vous informant que votre code est cassé.
Certains aiment ça:
$class = get_class($objectToTest);
switch($class) {
case 'TreeRequest':
echo "tree request";
break;
case 'GroundRequest':
echo "ground request";
break;
}
Ou ca:
switch(true) {
case $objectToTest instanceof TreeRequest:
echo "tree request";
break;
case $objectToTest instanceof GroundRequest:
echo "ground request";
break;
}