Fácil MVC

Exceção Capturada

1 - A classe referente ao módulo requisitado não foi encontrada!

Detalhes da pilha

#0 /home/storage/2/ea/99/inter3/public_html/bienalinternacionaldearquitetura.com/controlador/Controlador.php(100): Controlador->recuperarModulo() #1 /home/storage/2/ea/99/inter3/public_html/bienalinternacionaldearquitetura.com/index.php(129): Controlador->despachar() #2 {main}

Exceção gerada no arquivo: /home/storage/2/ea/99/inter3/public_html/bienalinternacionaldearquitetura.com/controlador/Controlador.php - Na linha: 120

Fonte do arquivo

001:
<?php
002:/**
003: * Arquivo do Controlador principal
004: * @package controlador
005: * @author José Berardo
006: * @author Túlio Carvalho
007: * @version 1.0
008: */
009:
010:/**
011: * Classe controladora principal do framework
012: * 
013: * @package controlador
014: */
015:class Controlador {
016:  /**
017:   * Inst�ncia ï¿½nica do Controlador.
018:   * Implementa��o do padr�o Singleton
019:   *
020:   * @var Controlador $instancia
021:   */
022:  private static $instancia;
023:
024:  /**
025:   * Qual m�dulo ser� carregado.
026:   *
027:   * @var Modulo $modulo
028:  */
029:  private $modulo;
030:  
031:  /**
032:   * Array onde ser�o registradas diversar informa��es.
033:   * Implementa��o do padr�o de projeto Registry que
034:   * sugere um local comum para reposit�rio de informa��es.
035:   *
036:   * @var array $registro
037:   */
038:  private $registro;
039:
040:  /**
041:   * Construtor privado do controlador.
042:   * S� ser� executado uma ï¿½nica vez por script.
043:   *
044:   */
045:  private function __construct() {
046:    $this->registro = array();
047:  }
048:
049:  /**
050:   * M�todo que recupera a inst�ncia da classe Controlador
051:   * @return Controlador
052:   */
053:  public static function getInstancia() {
054:    if (!isset(self::$instancia)) {
055:      self::$instancia = new Controlador();
056:    }
057:    return self::$instancia;
058:  }
059:  /**
060:   * M�todo que busca uma informa��o
061:   * registrada no controlador
062:   *
063:   * @param string $dado Nome do dado a ser buscado
064:   * @return mixed|boolean
065:   */
066:  public function get($dado) {
067:    if (isset($this->registro[$dado])) {
068:      return $this->registro[$dado];
069:    }
070:    return false;
071:  }
072:  /**
073:   * M�todo que registra informa��o no controlador
074:   *
075:   * @param string $nome
076:   * @param mixed $valor
077:   */
078:  public function set($nome$valor) {
079:    $this->registro[$nome] = $valor;
080:  }
081:  
082:  /**
083:   * M�todo que informa se o dado foi ou
084:   * n�o registrado no controlador
085:   *
086:   * @param string $dado
087:   * @return boolean
088:   */
089:  public function existe($dado) {
090:      return array_key_exists($dado$this->registro);
091:  }
092:  
093:  /**
094:   * M�todo que d� sequ�ncia ao processamento do script.
095:   * Dever� chamar a classe do m�dulo correto
096:   * @throws ControleException
097:   */
098:  public function despachar() {
099:    // Recuperando o m�dulo
100:    $modulo $this->recuperarModulo();
101:    // Recuperando o m�todo-a��o
102:    $metodo $this->recuperarAcao($modulo);
103:    // Recuperando os par�metros
104:    $parametros $this->recuperarParametros($metodo);
105:    // Dando sequ�ncia ao script
106:    $acao $this->registro['acao'];
107:    eval ("\$this->modulo->$acao($parametros);");
108:  }
109:  
110:  /**
111:   * M�todo auxiliar que recupera o m�dulo requisitado
112:   *
113:   * @return Modulo
114:   */
115:  private function recuperarModulo() {
116:    $modulo ucfirst($this->registro['modulo']);
117:    if (class_exists($modulo)) {
118:      $this->modulo = new $modulo();
119:    } else {
120:       throw new ControleException(

121:                ControleException::MODULO_INEXISTENTE);
122:    }
123:    return $modulo;
124:  }
125:  /**
126:   * M�todo auxiliar que recupera uma inst�ncia da classe
127:   * de reflex�o ReflectionMethod referente ao 
128:   * m�todo-a��o escolhido.
129:   * @throws ControleException
130:   * @param Modulo $modulo
131:   * @return ReflectionMethod
132:   */
133:  private function recuperarAcao($modulo) {
134:    try {
135:      // Verificando se existe o m�todo-a��o
136:      // na classe encontrada
137:      $rc = new ReflectionClass($modulo);
138:      // Se n�o existir, a linha abaixo levantar�
139:      // uma ReflectionException
140:      $metodo $rc->getMethod($this->registro['acao']);
141:      // Verificando se o m�todo ï¿½ vis�vel
142:      if ($metodo->isPublic()) {
143:        return $metodo;
144:        // Se n�o for v�sivel, lenvantar ControleException
145:      } else {
146:        throw new 
147:        ControleException(ControleException::ACAO_PROTEGIDA);
148:      }
149:      // Se houver ReflectionException, 
150:      // levantar ControleException
151:    } catch (ReflectionException $ex) {
152:      throw new 
153:      ControleException(ControleException::ACAO_INEXISTENTE);
154:    }
155:  }
156:  
157:  /**
158:   * M�todo auxiliar que recupera a string dos par�metros
159:   * para o self::despachar() poder dar sequ�ncia ao script.
160:   * @throws ControleException
161:   * @param ReflectionMethod $metodo
162:   * @return string
163:   */
164:  private function recuperarParametros($metodo) {
165:    // Se o total de par�metros suprir o n�mero requerido
166:    if (@count($this->registro['parametros']) >=
167:      $metodo->getNumberOfRequiredParameters()) {
168:      // Recuperando os par�metros registrados
169:      $parametros "'";
170:      if (isset($this->registro['parametros'])) {
171:        $parametros .= implode("', '"172:                       $this->registro['parametros']);
173:      }
174:      $parametros .= "'"175:      $parametros str_replace("''"""$parametros);
176:        
177:      return $parametros;
178:    } else {
179:      throw new ControleException(
180:            ControleException::PARAMETROS_INSUFICIENTES);
181:    }
182:  }
183:  
184:  /**
185:   * M�todo utilitario chamado pelo contrutor
186:   * para recuperar os dados $_POST e $_FILES
187:   */
188:  private function capturarDados() {
189:    // Capturando dados de requisi��es POST
190:    $this->dados $_POST;
191:    // Capturando arquivos enviados
192:    $this->arquivos $_FILES;
193:  }
194:}
195:?>