CodeIgniter Drivers

2 de janeiro de 2012, em Passos Iniciais, por

CodeIgniter Drivers

Drivers no CodeIgniter, apesar de ser algo relativamente novo no framework, não tem nada de complicado. Na verdade, drivers não passam de bibliotecas, mas com característica e modo de usar ligeiramente diferentes. Como já foi abordado aqui, no CodeIgniter Brasil, como carregar bibliotecas e como criar bibliotecas no CodeIgniter, chegou a hora de abordar os Drivers do CodeIgniter.

Drivers no CodeIgniter

Como foi dito, drivers são, somente, um tipo diferente de library que trabalha mais com o conceito de herança do PHP, quer dizer, existe uma classe mãe e outras classes filhas quaisquer. Classes filhas têm acesso à classe mãe, mas não a suas “classes irmãs”.

Então, drivers podem ser usados em situações em que a programação e organização de uma ou mais bibliotecas de um projeto sejam beneficiados ao serem esta(s) classe(s) dividida(s) em diversas outras classes.

Criando drivers no CodeIgniter

Drivers devem ser criados no diretório system/libraries, em sua própria pasta, que deve ter o mesmo nome da classe mãe. Dentro deste diretório deve existir outra pasta chamada drivers, que conterá todas as possíveis classes filhas.

Para que fique mais claro, veja o seguinte modelo de estrutura de drivers no CodeIgniter:

  • /application/libraries/Driver_name
    • Driver_name.php
    • drivers
      • Driver_name_subclass_1.php
      • Driver_name_subclass_2.php
      • Driver_name_subclass_3.php
A fim de manter compatibilidade em sistemas de arquivos que são case-sensitive, o diretório “Driver_name” deve seguir o padrão ucfirst(), ou seja, o primeiro caracter em maiúsculo e, os demais, em minúsculo.

Usando drivers no CodeIgniter

Para usar um driver, primeira é preciso inicializá-lo (tal como fazemos com libraries) da seguinte maneira:

$this->load->driver('driver_name');

Métodos dessa classe são invocados usando:

$this->driver_name->method();

As classes filhas – os drivers, propriamente ditos – podem ser chamados diretamente por sua classe mãe, sem a necessidade de iniciar cada uma delas:

$this->driver_name->child_one->some_method();
$this->driver_name->child_two->another_method();

Bem tranquilo, certo? Como dissemos, não passam de bibliotecas do CI.

Exemplo de driver no CodeIgniter

Pelo fato de já termos passado sobre alguns artigos sobre libraries e pelo conceito e conteúdo deste artigo, já é possível entender o funcionamento e dinâmica dos drivers no CodeIgniter. Mas, para fixar um conceito, é sempre interessante a visualização e análise de algum exemplo concreto.

E, para o caso, indico o projeto no GitHub que foi criado, justamente, para servir de exemplo: CI2_Drivers_example.

Ao baixar e analisar os arquivos, certamente você entenderá melhor como é funcionamento deste recursos interessantíssimo do framework e poderá, a partir de agora, julgar corretamente ao escolher quando usar drivers no CodeIgniter.

5 comentários em "CodeIgniter Drivers"

gravatar

João Matias  em 6 de janeiro de 2012

Fala Guri!! Parabens por sempre dar continuidade aos assuntos desse excelente Framework!

Kara, estou tendo problema com o comando $this->input->post('nome_do_campo');

Não consigo pegar os values dos inputs no meu form, através do post…será que esqueci de carregar alguma coisa e mudar alguma configuração? (a classe input é carregada automaticamente, certo?)

gravatar

Tárcio Zemel  em 7 de janeiro de 2012

Sim, a Input Class é inicializada automaticamente (apesar de o assunto não ser muito relacionado ao post, rsrs).

Ainda vamos tratar sobre isso aqui no blog, mas dê uma olhadinha na documentação oficial da Input Class que lá explica o básico.

Abraços!

gravatar

João Matias  em 17 de janeiro de 2012

valew pela dica, e me desculpe por ter me antecipado ao assunto…era uma dúvida persistente….consegui resolver com alguns foruns gringos…..o problema estava no action do form…fico aguardo mais sobre isso no seu blog!!! abraços

gravatar

Mônica  em 31 de agosto de 2012

Já comentei em outros artigos aqui e estou quase descidida em migra a plaforma de alguns dos meus sites, tenho mais 2: http://jogodohomemaranha.com/ e http://jogosdezumbi.net.br/ em ambos sempre tenho a mesma dificuldade de subir os swf dos games.

gravatar

Tárcio Zemel  em 6 de setembro de 2012

Eu acho que o WordPress dá conta do recado, sim. Faça o seguinte, dê uma olhada no plugin Pods, ele vai ter ajudar nisso! ;-)

    Comente!