PHPDaemon\Core\AppResolver::getInstance PHP Method

getInstance() public method

Gets instance of application
public getInstance ( string $appName, string $instance = '', boolean $spawn = true, boolean $preload = false ) : object
$appName string Application name
$instance string Instance name
$spawn boolean If true, we spawn an instance if absent
$preload boolean If true, worker is at the preload stage
return object $instance AppInstance
    public function getInstance($appName, $instance = '', $spawn = true, $preload = false)
    {
        $class = ClassFinder::find($appName, 'Applications');
        if (isset(Daemon::$appInstances[$class][$instance])) {
            return Daemon::$appInstances[$class][$instance];
        }
        if (!$spawn) {
            return false;
        }
        $fullname = $this->getAppFullName($appName, $instance);
        if (!class_exists($class)) {
            Daemon::$process->log(__METHOD__ . ': unable to find application class ' . json_encode($class) . '\'');
            return false;
        }
        if (!is_subclass_of($class, '\\PHPDaemon\\Core\\AppInstance')) {
            Daemon::$process->log(__METHOD__ . ': class ' . json_encode($class) . '\' found, but skipped as long as it is not subclass of \\PHPDaemon\\Core\\AppInstance');
            return false;
        }
        $fullnameClass = $this->getAppFullName($class, $instance);
        if ($fullname !== $fullnameClass && isset(Daemon::$config->{$fullname})) {
            Daemon::$config->renameSection($fullname, $fullnameClass);
        }
        if (!$preload) {
            /** @noinspection PhpUndefinedVariableInspection */
            if (!$class::$runOnDemand) {
                return false;
            }
            if (isset(Daemon::$config->{$fullnameClass}->limitinstances)) {
                return false;
            }
        }
        return new $class($instance);
    }