Esempio n. 1
0
 /**
  * (@fake: public static)
  *
  * @override
  * @throws IllegalArgumentException
  * */
 public function __get($name)
 {
     $attr = "_{$name}";
     if (property_exists($this, $attr)) {
         return $this->{$attr};
     }
     parent::__get($name);
     // @codeCoverageIgnoreStart
 }
Esempio n. 2
0
 /**
  * (fake: public static)
  *
  * @override
  * @throws IllegalArgumentException
  * */
 public function __get($name)
 {
     $attr = "_{$name}";
     if (property_exists($this, $attr)) {
         return $this->{$attr};
     } elseif ($this->propertyExists($name)) {
         return $this->_property[$name];
     } elseif ('id' == $name) {
         return $this->propertyExists($name);
     }
     # se nenhuma das opcoes acima for atendidas,
     # uma illegalArgExc sera lancada
     parent::__get($name);
     // @codeCoverageIgnoreStart
 }
Esempio n. 3
0
 /**
  * acesso as referencias dos objetos ou à 'saf' ou à 'bootstrap'
  *
  * @example SIALApplication::__get
  * @code
  * <?php
  *  use \br\gov\sial\core\exception\IllegalArgumentException;
  *
  *  try {
  *      # formato geral: $app->__VAR_NAME__
  *
  *      ...
  *      # recupera referencia do objeto SIAL Appllication Form (SAF)
  *      $saf = $app->saf;
  *
  *      ...
  *      # recupera referencia do objeto Bootstrat
  *      $bootstrap = $app->bootstrap;
  *
  *  } catch (IllegalArgumentException $iexc) {
  *      # tratar illegal exception conforme necessidade
  *  }
  *
  *  # recupera referencia do objeto Bootstrap
  *  $bootstrap = $app->bootstrap;
  * ?>
  * @endcode
  *
  * @param string $name informa o nome da referência que se deseja obter (ou 'saf' ou 'bootstrap')
  * @throws \br\gov\sial\core\exception\IllegalArgumentException lançada sempre que '__VAR_NAME__' não tiver disponível
  * */
 public function __get($name)
 {
     # libera acesso somente leitura as objetos:
     switch ($name) {
         case 'saf':
             return $this->_isaf;
         case 'bootstrap':
             return $this->_bootstrap;
     }
     parent::__get($name);
 }
 /**
  * verifica a existencia do attr na anotacao, tambem, fica reponsavel por
  * verificar se o attr possui referencia para outro ValueObject, foreignKey.
  * caso o attr solicitado nao exista, também, na anotacao, uma exception
  * sera lancada.
  *
  * @param string $attr
  * @throws ValueObjectException
  * */
 public function __get($attr)
 {
     $value = NULL;
     $getter = $this->getter($attr);
     # prioriza o uso do getter
     if ($getter) {
         $value = $this->{$getter}();
     } else {
         $translatendAttr = self::attrTranslateName($attr);
         # note que se o attr nao existe, a superclasse lancara um
         # exception, tal qual ja eh feito
         if (!isset($this->{$translatendAttr})) {
             parent::__get($attr);
         }
         $value = $this->{$translatendAttr};
         # verifica se o attr em questao trata-se de uma chave-estrangeira
         $attrAnnon = $this->annotation()->load()->attrs;
         $foreignKey = isset($attrAnnon->{$attr}->foreignKey) ? $attrAnnon->{$attr}->foreignKey : NULL;
         if ($foreignKey) {
             # converte namespace de valueObject para o namespace capaz
             # de recuperar os dados da chave-estrangeira
             $namespace = explode('valueObject', $foreignKey->refer);
             $namespace[1] = str_replace('ValueObject', 'Business', $namespace[1]);
             $namespace[0] .= 'mvcb' . self::NAMESPACE_SEPARATOR;
             $namespace = implode('business', $namespace);
             $value = $namespace::factory()->find($value);
         }
     }
     return $value;
 }