コード例 #1
0
 /**
  * Cria aplicação.
  *
  * @example ApplicationAbstract::factory
  * @code
  * <?php
  *     $decStyle = 'ICMBioGreen';
  *     $docType  = 'html';
  *
  *     # decorador do documento
  *     $decorator = DecoratorAbstract::factory($docType, $decStyle);
  *
  *     # criar aplicacao simples sem decorator
  *     $app = ApplicationAbstract::factory($docType, $decorator);
  * ?>
  * @endcode
  *
  * @param string $type
  * @param DecoratorAbstract $decorator
  * @return Application
  * @throws IllegalArgumentException
  * */
 public static function factory($type, $decorator = NULL)
 {
     $NSApplication = __NAMESPACE__ . self::NAMESPACE_SEPARATOR . 'application' . self::NAMESPACE_SEPARATOR . 'Application' . strtoupper($type);
     IllegalArgumentException::throwsExceptionIfParamIsNull(Location::hasClassInNamespace($NSApplication), self::T_APPLICATION_INVLAID_APP);
     $application = new $NSApplication();
     $application->_decorator = $decorator;
     return $application;
 }
コード例 #2
0
 /**
  * @param stdClass $param
  * @param string $type
  * @throws IllegalArgumentException
  * */
 public static function factory(\stdClass $param, $type)
 {
     $namespace = __NAMESPACE__ . self::NAMESPACE_SEPARATOR . $type . self::NAMESPACE_SEPARATOR . 'ScreenForm';
     IllegalArgumentException::throwsExceptionIfParamIsNull(Location::hasClassInNamespace($namespace), self::T_SCREENFORMABSTRACT_COMPONENT_UNAVAILABLE);
     return $namespace::factory($param);
 }
コード例 #3
0
 /**
  * Cria instância da View levando em consideração a especialização ou não da classe View pelo projeto.
  *
  * @return ViewAbstract
  * @throws ControllerException
  * @example ControllerAbstract::getView
  * @code
  * <?php
  *  // Busca em \mvcb\view\scripts\html o arquivo Foo.html
  *  $this->setViewType('html');
  *  $this->getView('foo');
  *
  *  // Busca em \mvcb\view\scripts\json o arquivo Bar.html
  *  $this->setViewType('json');
  *  $this->getView('bar');
  * ?>
  * @encode
  * */
 public function getView()
 {
     # nome da view que sera instanciada
     $type = ucfirst($this->_viewType);
     if (!isset($this->_view[$type])) {
         # certifica-se de que o boostrap tenha sido inicializado
         ControllerException::throwsExceptionIfParamIsNull($this->_bootstrap, self::T_CONTROLLER_METHOD_AFTER_BOOTSTRAP);
         # complemento do namespace para o pacote view
         $view = '\\mvcb\\view\\';
         # namespace da library da aplicacao
         $namespace = $this->_bootstrap->config()->get('app.namespace');
         $namespace = $this->erReplace(array('application' => ''), $namespace) . 'library';
         # verifica se existe especializacao da view na aplicacao
         # caso nao exista aponta para a view da camada do SIAL/core
         if (!Location::hasClassInNamespace("{$namespace}{$view}{$type}")) {
             $namespace = '\\br\\gov\\sial\\core';
         }
         $namespace = "{$namespace}{$view}{$type}";
         $this->_view[$type] = new $namespace();
         $this->_view[$type]->registerViewScriptBasedFromController($this);
         $this->_view[$type]->set('constant', $this->_bootstrap->constantHandler());
     }
     return $this->_view[$type];
 }
コード例 #4
0
 /**
  * @param string $type = 'html'
  * @throws IllegalArgumentException
  * */
 public static function factory($type = 'html')
 {
     $namespace = __NAMESPACE__ . self::NAMESPACE_SEPARATOR . $type . self::NAMESPACE_SEPARATOR . 'Document';
     IllegalArgumentException::throwsExceptionIfParamIsNull(Location::hasClassInNamespace($namespace), self::T_INVALID_TYPE);
     return new $namespace($type);
 }
コード例 #5
0
 /**
  * Cria decorator.
  *
  * @example DecoratorAbstract::factory
  * @code
  * <?php
  *     $docType  = 'html';
  *     $decStyle = 'ICMBioGreen';
  *
  *     # decorador do documento
  *     $decorator = DecoratorAbstract::factory($docType, $decStyle);
  * ?>
  * @endcode
  *
  * @param string $type
  * @param string $decStyle
  * @return Decorator
  * @throws IllegalArgumentException
  * */
 public static function factory($type, $decStyle = 'default')
 {
     $NSApplication = __NAMESPACE__ . self::NAMESPACE_SEPARATOR . 'decorator' . self::NAMESPACE_SEPARATOR . 'Decorator' . strtoupper($type);
     IllegalArgumentException::throwsExceptionIfParamIsNull(Location::hasClassInNamespace($NSApplication), self::T_DECORATOR_INVLAID_APP);
     return new $NSApplication();
 }
コード例 #6
0
 /**
  * @param string|ModelAbstract|null $namespace
  * @param stdClass $data
  * @return ValueObjectAbstract
  * */
 public static function factory($namespace = NULL, $data = NULL)
 {
     $data = $data ?: new \stdClass();
     if (NULL === $namespace) {
         $namespace = get_called_class();
     }
     if ($namespace instanceof parent) {
         $namespace = $namespace->getClassName();
     }
     if (FALSE === stripos($namespace, sprintf('%1$svalueObject%1$s', self::NAMESPACE_SEPARATOR)) && $namespace != 'br\\gov\\sial\\core\\lang\\TFile') {
         $sep = sprintf('%1$smvcb%1$s', self::NAMESPACE_SEPARATOR);
         ValueObjectException::throwsExceptionIfParamIsNull(!(FALSE === stripos($namespace, $sep)), self::T_VALUEOBJECT_IMPOSSIBLE_DEFINE_NAMESPACE);
         $namespace = current(explode($sep, $namespace));
         $namespace = sprintf('%1$s%2$svalueObject%2$s%3$s', $namespace, self::NAMESPACE_SEPARATOR, ucfirst(end(explode(self::NAMESPACE_SEPARATOR, $namespace))) . 'ValueObject');
         ValueObjectException::throwsExceptionIfParamIsNull(Location::hasClassInNamespace($namespace), sprintf(self::T_VALUEOBJECT_UNAVALIABLE, $namespace));
     }
     $valueObject = new $namespace();
     $valueObject->loadData((array) $data);
     return $valueObject;
 }