/**
  * Cria classe se ela não existe
  * 
  * @param string $namespace
  * @param string $class
  * @param string $parent
  * @param string $implements
  * @param string $license
  * */
 public static function create($namespace, $class, $parent = NUL, $implements = NULL, $license = NULL)
 {
     $NSTemp = $namespace;
     $namespace = self::NAMESPACE_SEPARATOR == substr($namespace, -1) ? substr($namespace, 0, -1) : $namespace;
     $namespace = $namespace . self::NAMESPACE_SEPARATOR . $class;
     $fullpath = Location::realpathFromNamespace($namespace) . '.php';
     if (TRUE == is_file($fullpath)) {
         return;
     }
     $dirname = dirname($fullpath);
     if (!is_dir($dirname)) {
         mkdir($dirname, 0700, TRUE);
     }
     $content = sprintf('<?php%5$s%1$s%5$s%2$s%5$s%5$s%3$s%5$s%4$s', self::classLicense(), self::classLocation($NSTemp), self::classDoc($NSTemp, $class), self::classDef($class, $parent, $implements), PHP_EOL);
     IOException::throwsExceptionIfParamIsNull(file_put_contents($fullpath, $content, LOCK_EX | FILE_TEXT), self::T_CREATECLASSIFNOTEXISTS_ERROR_ON_CREATE_CLASS);
 }
Example #2
0
 /**
  * cria o diretorio informado, se ainda nao existir, ou lanca um exception se
  * nao conseguir cria-lo
  *
  * @param string $dirpath
  * @return SIALApplication
  * @todo refatarar este metodo para outra classs
  * */
 public function createDirIfNotExists($dirpath)
 {
     if (!is_dir($dirpath)) {
         # verifica se o diretorio solicitado esta abaixo da estrutura do projeto
         IOException::throwsExceptionIfParamIsNull(false !== strpos($dirpath, constant('APPLICATION_HTDOCS')), self::T_SIALAPPLICATION_INVALID_PLACE_TO_CREATE_DIRECTORY);
         # @todo criar rotina para verificar se existe permissao de escrita do diretorio
         # note que sera necessario criar uma rotina recursiva para esta verificacao,
         # tendo em vista que o usuario podera informar uma cadeia de diretorio (arvore)
         # e pedir para criar de forma recursivar, exemplo:
         # /var/www/app_folder (ate este ponto os diretorios jah existem)
         # o usuario solicita a criacao de:
         # /var/www/app_folder/br/com/foo/bar (note que o ultimo diretorio valido eh app_folder)
         IOException::throwsExceptionIfParamIsNull(mkdir($dirpath, self::T_SIALAPPLICATION_DIRECTORY_PERMISSION, TRUE), sprintf(self::T_SIALAPPLICATION_UNABLE_TO_CREATE_DIRECTORY, str_replace(constant('APPLICATION_HTDOCS'), '', $dirpath)));
     }
     return $this;
 }
Example #3
0
 /**
  * grava o arquivo de cache
  *
  * @param stdClass $data
  * @throws IOException
  * */
 public function write(\stdClass $data)
 {
     # define o nome do arquivo que armazenará o cache
     $cacheFileName = self::cacheFileName($data);
     # verifica se é possível gravar na pasta de cache
     IOException::throwsExceptionIfParamIsNull(is_writable(dirname($cacheFileName)), self::T_ANNONTATIONCACHE_UNABLE_TO_WRITE_CACHE);
     # verifica se foi informando um dataSourceName para obter as metas-informacoes
     if ($metaDataSourceName = $this->safeToggle($data, 'persist', NULL)) {
         $this->meta($data, $metaDataSourceName);
     }
     IOException::throwsExceptionIfParamIsNull(file_put_contents($cacheFileName, json_encode($data)), 'Não foi possível gravar o cache solicitado');
 }
Example #4
0
 /**
  * verifica se o local para armazenamento dos arquivos é valido,
  * defini-se por válido:
  *   - a existência prévia da pasta
  *   - permimissão de leitura
  *   - permissão de escrita
  *
  * @param  string $fullpath
  * @throws IOException
  */
 private static function _isValidStorage($fullpath)
 {
     IOException::throwsExceptionIfParamIsNull(is_dir($fullpath), self::T_UPLOADER_INVALID_TARGET);
 }
 /**
  * cria a pasta que acomodará o arquivo de configuracao final
  *
  * @param string
  * @return string
  * */
 public static final function createTargetDirectory($dirname)
 {
     IOException::throwsExceptionIfParamIsNull(is_writeable($dirname), sprintf('Não há permissão de escrita no diretório %s', $dirname));
     $target = $dirname . DIRECTORY_SEPARATOR . 'cache';
     if (!is_dir($target)) {
         IOException::throwsExceptionIfParamIsNull(mkdir($target), 'Não foi possível criar pasta de cache de configuração');
     }
     return $target;
 }
Example #6
0
 /**
  * Fábrica de LimitAbstract
  *
  * @param string driver
  * @return LimitAbstract
  * @throws IOException
  * */
 public static function factory($driver)
 {
     $namespace = __NAMESPACE__ . self::NAMESPACE_SEPARATOR . strtolower($driver) . self::NAMESPACE_SEPARATOR . 'Limit';
     $message = self::LIMITABSTRACT_UNAVAILABLE_LIMIT_OPERATOR;
     IOException::throwsExceptionIfParamIsNull(TRUE == is_file(self::realpathFromNamespace($namespace) . '.php'), $message);
     return new $namespace();
 }