Kraken\Supervision\Supervisor::solve PHP Method

solve() public method

public solve ( $ex, $params = [], &$try )
    public function solve($ex, $params = [], &$try = 0)
    {
        $classBaseEx = get_class($ex);
        $classes = array_merge([$classBaseEx], class_parents($ex));
        $indexMin = -1;
        $chosen = null;
        foreach ($classes as $class) {
            $indexCurrent = array_search($class, array_keys($this->rules), true);
            if ($indexCurrent !== false && ($indexMin === -1 || $indexCurrent < $indexMin)) {
                $indexMin = $indexCurrent;
                $chosen = $class;
            }
        }
        if ($chosen === null) {
            return Promise::doReject(new ExecutionException("SolverInterface for [{$classBaseEx}] is not registered."));
        }
        $try++;
        $params = array_merge($this->params, $params);
        $valueOrPromise = $this->getSolver($chosen)->solve($ex, $params);
        return Promise::doResolve($valueOrPromise);
    }