<?php
class Fish {}
class Mammal {}
class Whale extends Mammal {}
class Human extends Mammal {}
class Shark extends Fish {}
// Not very exceptional...
class FoundException extends Exception
{}
function anyFish(array $collection)
{
$found = false;
try
{
array_walk_recursive($collection, function ($v) {
if($v instanceof Fish)
throw new FoundException('I found a fish.');
});
}
catch (FoundException $e)
{
$found = true;
}
return $found;
}
$seas = [
'pacific' => [new Whale, new Shark],
'atlantic' => [new Human, new Shark]
];
$pub = [new Human, new Human];
var_dump(anyFish($seas));
var_dump(anyFish($pub));
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
bool(true)
bool(false)