69 | | Neste exemplo, a função run() recebe como parâmetro a ação a ser executada, e o método dispatch() está encarregado de executar a função de controle correspondente. Assim, se for passada a ação 'salvar' será executado o método Salvar() desta mesma classe. Antes disto, porém foi realizada a conexão com o banco de dados, através do comando $this->model->DAO->connect(). |
| 68 | Neste exemplo, a função run() recebe como parâmetro a ação a ser executada, e o método dispatch() está encarregado de executar a função de controle correspondente. Assim, se for passada a ação 'salvar' será executado o método Salvar() desta mesma classe. Antes disto, porém foi realizada a conexão com o banco de dados, através do comando $this->model->DAO->connect(), mas isto é opcional. |
77 | | Tudo que foi falado até aqui sobre a camada Controller diz respeito ao código da atividade, mas note que na definição da classe Controller, existe uma heranca de outra classe, representado pela cláusula 'extends Controller'. Isso significa que existe uma classe superior (pai) da qual a classe em questão herda código. Na classe pai existem métodos que são comuns a todos as classes Controller das atividades. Esta maneira de programar por objetos, com herança, é fundamental para evitar a repetição de código. |
| 76 | Tudo que foi falado até aqui sobre a camada Controller diz respeito ao código da atividade, mas note que na definição da classe Controller, existe uma heranca de outra classe, representado pela cláusula 'extends Controller'. Isso significa que existe uma classe superior (pai) da qual a classe em questão é filha. Na classe pai existem métodos que são comuns a todos as classes Controller das atividades. Esta maneira de programar por objetos, com herança, é fundamental para evitar a repetição de código. |
156 | | Na classe de Controle, a nível de processo, representado pelo exemplo anterior, iremos colocar tudo aquilo que for comum ao Controle das atividades. A classe começa definindo as constantes que representam os templates do processo. Depois implementa o método construtor 'Controller', que no exemplo, está definindo três variáveis da camada View, que ficarão disponíveis para quem extender a classe. |
| 155 | Na classe de Controle, a nível de processo, representado pelo exemplo anterior, iremos colocar tudo aquilo que for comum ao Controle das atividades. A classe começa definindo as constantes que representam os templates do processo. Depois implementa o método construtor 'Controller', que no exemplo, está definindo três variáveis da camada View, que ficarão disponíveis para as classes que a extenderem. |
163 | | |
164 | | '''Estrutura:''' |
165 | | |
166 | | |
167 | | |
168 | | * Nível de módulo: |
169 | | |
170 | | * Representado pela classe !BaseController; |
171 | | |
172 | | * Contém um atributo para armazenamento de instância da camada View (!BaseController::view); |
173 | | |
174 | | * Contém um atributo para controlar qual template (interface) será exibido (!BaseController::templateFile); |
175 | | |
176 | | * Contém um atributo para armazenamento de instância Model de atividade (!BaseController::Model); |
177 | | |
178 | | * Contém método que recupera os dados produzidos pela camada Model e os envia para a camada View (arquivos tpl, pdf, xml, etc) exibí-los e formatá-los (!BaseController::loadViewVars()); |
179 | | |
180 | | * Contém método que cancela a execução da requisição atual (!BaseController::cancelar()); |
181 | | |
182 | | * Contém método que executa a ação inicial/padrão de cada atividade, opcional ser vazio e opcional ser sobrescrito (!BaseController::__default()); |
183 | | |
184 | | * Contém método abstrato (deve ser sobrescrito) que executa as atividades (!BaseController::run($action)); |
185 | | |
186 | | * Contém construtor da camada Controller, recebendo como argumento instância Model de atividade. |
187 | | |
188 | | |
189 | | |
190 | | |
191 | | * Nível de atividade: |
192 | | |
193 | | * Representado pela classe !NomeAtividadeController; |
194 | | |
195 | | * Gerencia comunicação entre a atividade (sistema) e o usuário; |
196 | | |
197 | | * Contém método homônimo para cada uma das ações da atividade; |
198 | | |
199 | | * Contém implementação para método herdado run ($action); |
200 | | |
201 | | * Contém, quando necessário, implementação para método herdado __default (). |
202 | | |
| 167 | * showForm: troca o template em uso; |
| 168 | * syncVars: transfere todos os atributos da camada Model para a Camada View; |
| 169 | * loadViewVars: recupera os dados produzidos pela camada Model e os transfere para a camada View; |
| 170 | * assign: seta o valor de uma variável da camada View; |
| 171 | * cancelar: aborta a execução da atividade corrente; |
| 172 | * dispatch: executa a ação solicitada pelo usuário; |