/** * Instantiate the translator and decorate with the cache decorator if cache is enabled. * * @param ObjectConfigInterface $config A ObjectConfig object with configuration options * @param ObjectManagerInterface $manager A ObjectInterface object * @return TranslatorInterface */ public static function getInstance(ObjectConfigInterface $config, ObjectManagerInterface $manager) { $class = $manager->getClass($config->object_identifier); $instance = new $class($config); $config = $instance->getConfig(); if ($config->cache) { $class = $manager->getClass('lib:translator.cache'); if (call_user_func(array($class, 'isSupported'))) { $instance = $instance->decorate('lib:translator.cache'); $instance->setNamespace($config->cache_namespace); } } return $instance; }
/** * Create filter and decorate it with FilterIterator if the filter implements FilterTraversable * * @param ObjectConfigInterface $config Configuration options * @param ObjectManagerInterface $manager A ObjectManagerInterface object * @return FilterInterface * @see FilterTraversable */ public static function getInstance(ObjectConfigInterface $config, ObjectManagerInterface $manager) { //Create the singleton $class = $manager->getClass($config->object_identifier); $instance = new $class($config); if ($instance instanceof FilterTraversable) { $instance = $instance->decorate('lib:filter.iterator'); } return $instance; }
/** * Force creation of a singleton * * @param ObjectConfigInterface $config Configuration options * @param ObjectManagerInterface $manager A ObjectManagerInterface object * @return DispatcherInterface */ public static function getInstance(ObjectConfigInterface $config, ObjectManagerInterface $manager) { //Merge alias configuration into the identifier $config->append($manager->getIdentifier('dispatcher')->getConfig()); //Create the singleton $class = $manager->getClass($config->object_identifier); $instance = new $class($config); //Add the object alias to allow easy access to the singleton $manager->registerAlias($config->object_identifier, 'dispatcher'); return $instance; }
/** * Instantiate the object * * If the behavior is auto mixed also lazy mix it into related row objects. * * @param ObjectConfigInterface $config A ObjectConfig object with configuration options * @param ObjectManagerInterface $manager A ObjectInterface object * @return DatabaseBehaviorAbstract */ public static function getInstance(ObjectConfigInterface $config, ObjectManagerInterface $manager) { $class = $manager->getClass($config->object_identifier); $instance = new $class($config); //Lazy mix behavior into related row objects. A supported behavior always has one is[Behaviorable] method. if ($instance->isSupported() && $instance->getMixer() && count($instance->getMixableMethods()) > 1) { $identifier = $instance->getMixer()->getIdentifier()->toArray(); $identifier['path'] = array('database', 'row'); $identifier['name'] = StringInflector::singularize($identifier['name']); $manager->registerMixin($identifier, $instance); } return $instance; }