Example #1
0
 /**
  * Realiza a inicialização prévia dos componentes da biblioteca Numenor, permitindo que os mesmos
  * estejam prontos para usar.
  * 
  * @access public
  * @static
  * @param mixed $configuracao Origem das configurações da biblioteca, em um dos formatos suportados
  * pela classe Zend\Config\Config
  * @return \Numenor\Bootstrap\Biblioteca Objeto de bootstrap da biblioteca.
  * @throws \Numenor\Excecao\ExcecaoArquivoConfiguracaoInvalido se o arquivo de configuração informado 
  * não existir, não puder ser aberto, ou estiver em um formato inválido.
  */
 public static function init($configuracao = null) : self
 {
     // Instancia a configuração do servidor.
     $configuracaoServidor = new Config(['diretorioRaiz' => $_SERVER['DOCUMENT_ROOT'] . '/', 'enderecoIp' => $_SERVER['SERVER_ADDR'], 'https' => (bool) $_SERVER['HTTPS'], 'ipUsuario' => $_SERVER['REMOTE_ADDR'], 'portaUsuario' => $_SERVER['REMOTE_PORT']]);
     // Instancia a configuração da biblioteca, de acordo com a origem dos parâmetros enviados:
     // - caso $configuracao seja nulo, então instancia a classe Zend\Config\Config diretamente sem nenhum conteúdo.
     //   Isto permite que os componentes da biblioteca Numenor que dispensam configuração possam ser utilizados de
     //   maneira independente.
     // - caso $configuracao seja um array, instancia a classe Zend\Config\Config diretamente, passando o array de
     //   configuração para o construtor.
     // - caso $configuracao seja um arquivo, chama a classe de factory do pacote Zend\Config para criar o objeto de
     //   configuração a partir deste arquivo.
     if ($configuracao === null) {
         return new self($configuracaoServidor);
     }
     if (is_array($configuracao)) {
         $biblioteca = new self($configuracaoServidor, new Config($configuracao));
     } else {
         try {
             $arquivoConfiguracao = $configuracaoServidor->diretorioRaiz . $configuracao;
             $configuracaoBiblioteca = ConfigFactory::fromFile($arquivoConfiguracao, true);
             $biblioteca = new self($configuracaoServidor, $configuracaoBiblioteca);
         } catch (ConfigException\RuntimeException $e) {
             throw new ExcecaoArquivoConfiguracaoInvalido($e);
         }
     }
     // Inicializa estaticamente as outras classes da biblioteca que precisam de inicialização prévia, caso a chave
     // da configuração correspondente tenha sido encontrada.
     $dados = $biblioteca->getConfiguracaoBiblioteca();
     // Inicializa a classe de geração de checksums com a chave da aplicação
     if (isset($dados->chaveChecksum)) {
         Checksum::setChavePadrao($dados->chaveChecksum);
     }
     // Inicializa a classe de cache em disco
     if (isset($dados->cache->geral->configuracao)) {
         CacheDisco::setDiretorioPadrao($configuracaoServidor->diretorioRaiz . $dados->cache->geral->configuracao->dir);
     }
     return $biblioteca;
 }