Esempio n. 1
0
 /**
  * Constructor de la clase. Carga la configuración de las acciones y opcionalmente carga el nombre de la clase que se va a crear
  * mediante el método create
  * 
  * @access public
  * @param $action (string) nombre de la acción
  * @return void
  */
 function ActionFactory($action = '')
 {
     // Cargar la configuración de acciones con las clases correspondientes
     $config = ActionConfiguration::getInstance();
     $this->_actions = $config->getAccionesByLink();
     // Datos de la acción por defecto
     $defaults = $config->getDefaults();
     $actionDefault = $config->getAccionByName($defaults['nombre']);
     $this->_action_default = $actionDefault["link"];
     // Guardar la accion que viene por parametro
     if (!empty($action)) {
         $this->_action = $action;
     }
 }
 /**
  * Creates and configure action object
  * Services are marked as scope: prototype
  *
  * @param ActionConfiguration $config
  *
  * @throws \RunTimeException
  * @return ActionInterface
  */
 protected function create(ActionConfiguration $config)
 {
     if (!$config->offsetExists(static::ACTION_TYPE_KEY)) {
         throw new \RunTimeException('The type must be defined');
     }
     $type = $config->offsetGet(static::ACTION_TYPE_KEY);
     if (!isset($this->actions[$type])) {
         throw new \RunTimeException(sprintf('No attached service to action type named "%s"', $config->offsetGet(static::ACTION_TYPE_KEY)));
     }
     $actionServiceId = $this->actions[$type];
     /** @var $action ActionInterface */
     $action = $this->container->get($actionServiceId);
     $action->setOptions($config);
     return $action;
 }