Newton Wagner

se desenvolvendo na web

Especializando Controllers no Code Igniter

with 4 comments

A algum tempo atrás eu expliquei aqui como estender a classe Controller no Code Igniter. Na época, eu não me atentei a um detalhe no guia do usuário do framework, que diz que não se deve estender a library Controller usando o load automático, salvando o arquivo na pasta application/libraries e usando o prefixo configurado.

A princípio pensei que era um problema no guia do usuário do CI, mas analisando com mais calma, de fato pode não ser bom estender o Controller dessa forma para incluir lógica aos seus controllers.

Imagine nosso sistema da forma analisada abaixo, onde temos 2 telas de cadastro e 1 relatório:

howtonotextendcci.gif

Vejam que como usamos o MY_Controller pra adicionar a lógica de Cadastros, nosso Relatório ficou órfão de uma especialização que nos pouparia tempo de desenvolvimento, caso tenhamos que implementar outros relatórios.

Pra resolver este problema, podemos criar nossa especialização na pasta de controllers da aplicação (ao invés da libraries), e incluir este arquivo nas classes que vamos estender. As classes ficariam dessa forma:

howtoextendcci.gif

Dessa forma, podemos criar quantos tipos de controllers quisermos. Pra facilitar ainda mais o trabalho, você ainda pode implementar a função __autoload() para não precisar ficar sempre incluindo a classe nos arquivos que for utilizar.

Written by Newton Wagner

June 11th, 2007 at 12:44 pm

Posted in code igniter

Tagged with ,

4 Responses to 'Especializando Controllers no Code Igniter'

Subscribe to comments with RSS or TrackBack to 'Especializando Controllers no Code Igniter'.

  1. O que se pode fazer também, é criar plugins caso seja necessário utilizar uma classe que cria uma funcionalidade a mais.

    Já vi alguns tutoriais do pessoal adicionando, por exemplo, o PHPMailer como plugin para enviar e-mails…

    Magus

    21 Jun 07 at 18:51

  2. Olá Magus,

    De fato pode-se usar Plugins para adicionar funcionalidades ao framework. Mas o caso de especialização é um pouco diferente, já que você estará criando uma extensão da classe.

    Dessa forma, a própria classe possui uma funcionalidade, pois herdou da super classe, sem você precisar instanciar de algum lugar.

    Obrigado pelo comentário.

    Newton Wagner

    22 Jun 07 at 10:57

  3. [...] O Kohana trabalha com autoload, e isso facilita a criação de extensões de Controllers e Models, que não sejam pela forma padrão, conforme eu disse num artigo sobre especialização de Controllers no CI. [...]

  4. [...] O Kohana trabalha com autoload, e isso facilita a criação de extensões de Controllers e Models, que não sejam pela forma padrão, conforme eu disse num artigo sobre especialização de Controllers no CI. [...]

Leave a Reply