public function getResolverObject($state = null, array $options = array())
    {
        if ($state == null && isset($this->resolverObject['last_resolver'])) {
            // latest invoked resolver
            return $this->resolverObject['last_resolver'];
        }
        
        if ($state != 'resolver_adapter_service' && $state != 'mvclayout_resolver_adapter')
            throw new \Exception('Invalid state name provided.');
        
        // create resolver state object from config
        $config = $this->getConfig();

        if (isset($config['theme_locator']))
            $config = $config['theme_locator'];
        else
            $config = array();

        if (!isset($config[$state]))
            throw new \Exception("Theme Resolver Service not present in config[$state].");

        $config = $config[$state];
        // is string, 'resolver_adapter' => 'resolver\service'
        if (is_string($config)) {
            $config = array(
                "{$config}" => 1
            );
        }

        if (isset($this->resolverObject[$state])) {
            $resolver = $this->resolverObject[$state];

            $this->resolverObject['last_resolver'] = $resolver;

            return $resolver;
        }
        else 
            $resolver = new Resolvers\Aggregate();
        
        foreach ($config as $service => $priority)
        {
            if ($this->getServiceLocator()->has($service)) {
                $service = $this->getServiceLocator()->get($service);
            } else {
                if (!class_exists($service))
                    throw new \Exception("Resolver '$service' not found for yimaTheme as Service either Class.");

                $service = new $service();
            }

            if ($service instanceof Resolvers\LocatorResolverAwareInterface) {
                // inject themeLocator to access config and other things by resolver
                $service->setThemeLocator($this);
            }

            if ($service instanceof Resolvers\ConfigResolverAwareInterface) {
                // set yimaTheme config for resolver
                $service->setConfig($this->getConfig());
            }
            
            if (isset($options['event_mvc']))
                if ($service instanceof Resolvers\MvcResolverAwareInterface)
                	$service->setMvcEvent($options['event_mvc']);

            $resolver->attach($service, $priority);
        }
        
        $this->resolverObject[$state]          = $resolver;
        $this->resolverObject['last_resolver'] = $resolver;
        
        return $resolver;
    }
public function getResolverObject($state = null, array $options = array())
    {
        if ($state == null && isset($this->resolverObject['last_resolver'])) {
            // latest invoked resolver
            return $this->resolverObject['last_resolver'];
        }
        
        if ($state != 'resolver_adapter_service' && $state != 'mvclayout_resolver_adapter')
            throw new \Exception('Invalid state name provided.');
        
        // create resolver state object from config
        $config = $this->getConfig();

        if (isset($config['theme_locator']))
            $config = $config['theme_locator'];
        else
            $config = array();

        if (!isset($config[$state]))
            throw new \Exception("Theme Resolver Service not present in config[$state].");

        $config = $config[$state];
        // is string, 'resolver_adapter' => 'resolver\service'
        if (is_string($config)) {
            $config = array(
                "{$config}" => 1
            );
        }

        if (isset($this->resolverObject[$state])) {
            $resolver = $this->resolverObject[$state];

            $this->resolverObject['last_resolver'] = $resolver;

            return $resolver;
        }
        else 
            $resolver = new Resolvers\Aggregate();
        
        foreach ($config as $service => $priority)
        {
            if ($this->getServiceLocator()->has($service)) {
                $service = $this->getServiceLocator()->get($service);
            } else {
                if (!class_exists($service))
                    throw new \Exception("Resolver '$service' not found for yimaTheme as Service either Class.");

                $service = new $service();
            }

            if ($service instanceof Resolvers\LocatorResolverAwareInterface) {
                // inject themeLocator to access config and other things by resolver
                $service->setThemeLocator($this);
            }

            if ($service instanceof Resolvers\ConfigResolverAwareInterface) {
                // set yimaTheme config for resolver
                $service->setConfig($this->getConfig());
            }
            
            if (isset($options['event_mvc']))
                if ($service instanceof Resolvers\MvcResolverAwareInterface)
                	$service->setMvcEvent($options['event_mvc']);

            $resolver->attach($service, $priority);
        }
        
        $this->resolverObject[$state]          = $resolver;
        $this->resolverObject['last_resolver'] = $resolver;
        
        return $resolver;
    }
public function getResolverObject ( $ state = null , array $ options = array ( ) ) { if ( $ state == null && isset ( $ this -> resolverObject [ 'last_resolver' ] ) ) { // latest invoked resolver return $ this -> resolverObject [ 'last_resolver' ] ; } if ( $ state != 'resolver_adapter_service' && $ state != 'mvclayout_resolver_adapter' ) throw new \ Exception ( 'Invalid state name provided.' ) ; // create resolver state object from config $ config = $ this -> getConfig ( ) ; if ( isset ( $ config [ 'theme_locator' ] ) ) $ config = $ config [ 'theme_locator' ] ; else $ config = array ( ) ; if ( ! isset ( $ config [ $ state ] ) ) throw new \ Exception ( "Theme Resolver Service not present in config[$state]." ) ; $ config = $ config [ $ state ] ; // is string, 'resolver_adapter' => 'resolver\service' if ( is_string ( $ config ) ) { $ config = array ( "{$config}" => 1 ) ; } if ( isset ( $ this -> resolverObject [ $ state ] ) ) { $ resolver = $ this -> resolverObject [ $ state ] ; $ this -> resolverObject [ 'last_resolver' ] = $ resolver ; return $ resolver ; } else $ resolver = new Resolvers \ Aggregate ( ) ; foreach ( $ config as $ service => $ priority ) { if ( $ this -> getServiceLocator ( ) -> has ( $ service ) ) { $ service = $ this -> getServiceLocator ( ) -> get ( $ service ) ; } else { if ( ! class_exists ( $ service ) ) throw new \ Exception ( "Resolver '$service' not found for yimaTheme as Service either Class." ) ; $ service = new $ service ( ) ; } if ( $ service instanceof Resolvers \ LocatorResolverAwareInterface ) { // inject themeLocator to access config and other things by resolver $ service -> setThemeLocator ( $ this ) ; } if ( $ service instanceof Resolvers \ ConfigResolverAwareInterface ) { // set yimaTheme config for resolver $ service -> setConfig ( $ this -> getConfig ( ) ) ; } if ( isset ( $ options [ 'event_mvc' ] ) ) if ( $ service instanceof Resolvers \ MvcResolverAwareInterface ) $ service -> setMvcEvent ( $ options [ 'event_mvc' ] ) ; $ resolver -> attach ( $ service , $ priority ) ; } $ this -> resolverObject [ $ state ] = $ resolver ; $ this -> resolverObject [ 'last_resolver' ] = $ resolver ; return $ resolver ; }
Get Resolver Object used by Locator

@TODO It Seems Have Conflict on Locator used Global-
-Layout Resolver defined on merged config Against Theme Specific Resolver For Layout

@param string $state   Setup configuration resolver
@param array  $options Options
@return Resolvers\Aggregate
@throws \Exception
Get Resolver Object used by Locator