/** * Método que retorna um professor válido * @param int $pkUsuario Define o código do professor a ser buscado. * É ignorado caso o usuário logado seja do tipo professro * @param string $objetoHerdado Define uma especialização, um objeto herdeiro de Professor * @return Kernel_Models_Professor retorna um objeto do tipo professor de * acordo com o que foi informado ou usuário logado * @throws Exception */ public function getProfessor($pkUsuario = 0, $objetoHerdado = FALSE) { //Validação inicial $tipoLogado = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_idTipoUsuario(); //Impedindo que um professor use dados de outro if ($tipoLogado == Kernel_Models_TiposUsuario::TIPO_PROFESSOR) { $pkUsuario = (int) $this->usuarioLogado->get_idUsuario(); } if (!(int) $pkUsuario) { //Verificando se o código do professor é válido throw new Exception("O professor informado é inválido"); } //Criando instancia da classe if (is_string($objetoHerdado)) { //Este trecho é executado quando um objeto especifico é informado(especialização) //Verificando se a classe informada existe if (!class_exists($objetoHerdado)) { throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema"); } //Verifica se a classe informada é herdeira da classe do professor if (!in_array("Kernel_Models_Professor", array_keys(class_parents($objetoHerdado)))) { throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema"); } //Inicializa a especialização $professorObj = new $objetoHerdado(); } else { //Inicializa o objeto padrão $professorObj = new Kernel_Models_Professor(); } $professor = $professorObj->get((int) $pkUsuario); if (!$professor) { //Verificando se o professor existe no banco de dados throw new Exception("O professor informado é inválido"); } return $professor; }