/** * (@fake: public static) * * @override * @throws IllegalArgumentException * */ public function __get($name) { $attr = "_{$name}"; if (property_exists($this, $attr)) { return $this->{$attr}; } parent::__get($name); // @codeCoverageIgnoreStart }
/** * (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 }
/** * 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; }