CodeIgniter: Autocomplete no NetBeans

Desenvolver um projeto no CodeIgniter, com tantas bibliotecas e helpers que o framework oferece e com tantas outras classes próprias e/ou de terceiros sem o recurso de autocomplete que os editores e IDEs atuais oferecem é uma insanidade. É muito difícil saber/lembrar todos os métodos de uma determinada classe, o que recebem como parâmetro e o que retornam.

Desenvolvo meus projetos no NetBeans, e apesar dele fornecer uma gama enorme de sugestões de autocomplete de código para as funções nativas do PHP e até de alguns frameworks, para o CI temos que configurar esse recurso manualmente.

Dessa forma, vou compartilhar com vocês nesse post, como fazer para que o seu NetBeans reconheça as classes do CodeIgniter e te dê sugestões de autocomplete de código naturalmente quando você estiver programando ou quando pressionar o CTRL + Space.

Para que funcione, obviamente, seu projeto deve estar criado no IDE e os arquivos do framework inclusos. Para que o NetBeans consiga mapear as classes do CI, você deve informá-las através de annotations dentro de um arquivo (você poderia fazer isso arquivo por arquivo somente daquelas classes que são utilizadas, mas aqui iremos generalizar).

Eu particularmente coloco esse arquivo com as annotations em um subdiretório da pasta nbproject (pois essa pasta, geralmente, não é versionada e nem colocada em ambiente de produção).

Bom, então dentro da pasta nbproject vou criar a pasta CI_Autocompletes e nela um novo arquivo chamado CI_Autocompletes.php

Dentro desse arquivo, vou colocar o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
/**
 * @property CI_DB_active_record $db
 * @property CI_DB_forge $dbforge
 * @property CI_Benchmark $benchmark
 * @property CI_Calendar $calendar
 * @property CI_Cart $cart
 * @property CI_Config $config
 * @property CI_Controller $controller
 * @property CI_Email $email
 * @property CI_Encrypt $encrypt
 * @property CI_Exceptions $exceptions
 * @property CI_Form_validation $form_validation
 * @property CI_Ftp $ftp
 * @property CI_Hooks $hooks
 * @property CI_Image_lib $image_lib
 * @property CI_Input $input
 * @property CI_Language $language
 * @property CI_Loader $load
 * @property CI_Log $log
 * @property CI_Model $model
 * @property CI_Output $output
 * @property CI_Pagination $pagination
 * @property CI_Parser $parser
 * @property CI_Profiler $profiler
 * @property CI_Router $router
 * @property CI_Session $session
 * @property CI_Sha1 $sha1
 * @property CI_Table $table
 * @property CI_Trackback $trackback
 * @property CI_Typography $typography
 * @property CI_Unit_test $unit_test
 * @property CI_Upload $upload
 * @property CI_URI $uri
 * @property CI_User_agent $user_agent
 * @property CI_Validation $validation
 * @property CI_Xmlrpc $xmlrpc
 * @property CI_Xmlrpcs $xmlrpcs
 * @property CI_Zip $zip
 * 
 * Add addtional libraries you wish
 * to use in your controllers here
 * 
 */
class CI_Controller {};
/**
 * @property CI_DB_query_builder $db
 * @property CI_DB_forge $dbforge
 * @property CI_Config $config
 * @property CI_Loader $load
 * @property CI_Session $session
 *
 * Add addtional libraries you wish
 * to use in your models here.
 * 
 */
class CI_Model {};
?>

E pronto! Faça o teste. Vá até algum Controller ou Model, carregue alguma Lib e veja o resultado. As classes do CI estarão nas sugestões do NetBeans no momento em que você estiver implementando.

Espero que essa dica lhe seja útil.

Qualquer dúvida poste um comentário.

Abs!

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *