File "ExactDiscoverCondition.php"

Full Path: /var/www/html/back/vendor/spatie/php-structure-discoverer/src/DiscoverConditions/ExactDiscoverCondition.php
File size: 1 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Spatie\StructureDiscoverer\DiscoverConditions;

use Spatie\StructureDiscoverer\Data\DiscoveredStructure;
use Spatie\StructureDiscoverer\Support\Conditions\HasConditions;

class ExactDiscoverCondition extends DiscoverCondition
{
    /** @var DiscoverCondition[] */
    private array $conditions = [];

    public function __construct(DiscoverCondition|HasConditions ...$conditions)
    {
        foreach ($conditions as $condition) {
            $this->add($condition);
        }
    }

    public function add(DiscoverCondition|HasConditions $condition): static
    {
        $this->conditions[] = $condition instanceof HasConditions
            ? $condition->conditionsStore()
            : $condition;

        return $this;
    }

    public function satisfies(DiscoveredStructure $discoveredData): bool
    {
        foreach ($this->conditions as $condition) {
            if (! $condition->satisfies($discoveredData)) {
                return false;
            }
        }

        return true;
    }
}