wol-soft/php-json-schema-model-generator

View on GitHub
src/Utils/ResolvableTrait.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

declare(strict_types=1);

namespace PHPModelGenerator\Utils;

trait ResolvableTrait
{
    /** @var bool */
    protected $isResolved = false;
    /** @var callable[] */
    protected $onResolveCallbacks = [];

    public function onResolve(callable $callback): void
    {
        $this->isResolved
            ? $callback()
            : $this->onResolveCallbacks[] = $callback;
    }

    public function isResolved(): bool
    {
        return $this->isResolved;
    }

    public function resolve(): void
    {
        $this->isResolved = true;

        foreach ($this->onResolveCallbacks as $callback) {
            $callback();
        }

        $this->onResolveCallbacks = [];
    }
}