File "ImplementsDiscoverCondition.php"
Full Path: /var/www/html/back/vendor/spatie/php-structure-discoverer/src/DiscoverConditions/ImplementsDiscoverCondition.php
File size: 1.31 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Spatie\StructureDiscoverer\DiscoverConditions;
use Spatie\StructureDiscoverer\Data\DiscoveredClass;
use Spatie\StructureDiscoverer\Data\DiscoveredEnum;
use Spatie\StructureDiscoverer\Data\DiscoveredInterface;
use Spatie\StructureDiscoverer\Data\DiscoveredStructure;
class ImplementsDiscoverCondition extends DiscoverCondition
{
/** @var string[] */
private array $interfaces;
public function __construct(
string ...$interfaces
) {
$this->interfaces = $interfaces;
}
public function satisfies(DiscoveredStructure $discoveredData): bool
{
if ($discoveredData instanceof DiscoveredClass || $discoveredData instanceof DiscoveredEnum) {
$foundImplements = array_filter(
$discoveredData->implementsChain ?? $discoveredData->implements,
fn (string $interface) => in_array($interface, $this->interfaces)
);
return count($foundImplements) > 0;
}
if ($discoveredData instanceof DiscoveredInterface) {
$foundExtends = array_filter(
$discoveredData->extendsChain ?? $discoveredData->extends,
fn (string $class) => in_array($class, $this->interfaces)
);
return count($foundExtends) > 0;
}
return false;
}
}