Code Igniter – como carregar um helper em um model?

Nos últimos meses estou trabalhando bastante em dois projetos com Code Igniter: um manager (MongoDB + Code Igniter) e o sistema de e-commerce do Eu Compraria!

Aprendi vários macetes do framework e também melhorei o conhecimento que eu achava que tinha de MVC, antes eu fazia um uso excessivo de helpers para manipular coisas que hoje vejo que deveria estar no model – e em algumas funções precisei usar helpers no model, e não queria sobrecarregar a aplicação carregando este helper sempre.

Como carregar um helper em um model?

Em um controller normal carregar um helper do Code Igniter é muito simples:

$this->load->helper('url');

O $this no controller se refere a instância do Code Igniter e é ela que carrega os helpers, models e tudo mais do CI. Quando estamos em um model (estou usando Data Mapper e recomendo que você faça o mesmo) o $this é uma referência do própio objeto do model.

Para isso no model temos que recuperar a instância do CI e depois fazer com que esta carregue o helper (ou qualquer outra parte do código que o sistema precise), por exemplo:

$ci = get_instance();
$ci->load->helper('url');

Pronto, agora você pode carregar helpers, models e bibliotecas onde quiser: model, helper e bibliotecas.

Iniciando o Sublime do terminal no Mac OS

Apesar de gostar do Notepad++ e do Komodo, eu não me arrependo de ter mudado para o Sublime Text 2, comecei a usar ele no Linux e continuo no Mac (não sei como é o desempenho dele no Windows, mas deve ser bacana também).

Com o tempo de uso, executar tarefas no terminal é bem mais rápido do que em uma interface gráfica, então é comum estar sempre com um terminal aberto, certo?

Que tal iniciar o Sublime (ou qualquer outro aplicativo que você usa com frequência) através do terminal?

Quer abrir o projeto Eu Compraria?

sublime www/eucompraria

Ou ainda:

cd www/eucompraria
sublime.

Entendeu, né?

 

Executando o Sublime pelo terminal no Mac OS

Primeiro você precisa saber onde está instalado o Sublime, se você instalou no local padrão (Applications) e digitar:

open /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl

Se o Sublime abriu, você está pronto para criar um atalho. Se não abriu, você precisa descobrir onde ele está instalado para pegar o caminhodo "subl".

Para uma aplicação ficar disponível diretamente no terminal ela deve estar em algum diretório listado nas configurações do seu bash_profile, isto é assunto para outro post e provavelmente o seu /usr/local/bin é um destes diretórios, portanto vamos para o próximo passo: criar um link simbólico.

Digite no terminal:

ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/sublime

Caso você queira mudar o atalho que você deverá digitar no terminal, mude o sublime negritado no comando aí em cima para o que você desejar.

Pronto, seu sublime deve estar funcionando diretamente pelo terminal do seu mac, para testar digite

sublime

Ou ainda:

sublime nome-de-um-diretorio

 

Espero ter ajudado!

PHP short_open_tag

Uma vez um colega me disse que os erros bobos são os mais difíceis de serem detectados, e é onde acabamos perdendo mais tempo – por isso eu acho pair programming uma ótima idéia.

Resolvi escrever este post para que os leitores, quando se depararem com situação parecida, economizem o precisoso tempo indo direto a solução e não fazendo os testes como eu fiz. O problema: meu apache parou de executar algumas tags do PHP, imprimindo o código PHP na tela.

 

No Mac OS configurei o Apache, PHP, NodeJS e o MongoDB. Tesstei e todos estavam funcionando, porém vários dos meus projetos, como o And After e o Eu Compraria deixaram de funcionar corretamente. As páginas abriam, algumas sem CSS, tudo estranho! Fui verificar o código e o PHP não estava interpretando nada dentro do e estava imprimindo o código no HTML.

Com alguns testes descobri que <?php funcionava e <? não, com mais um pouco de pesquisa descobri uma configuração que nunca dei importância no PHP, a short_open_tag.

 

PHP short_open_tag

short_open_tag é a configuração que permite o atalho de sintaxe <? ser interpretado da mesma forma que <?php.

Como habilitar ou desabilitar a short_open_tag?

Esta configuração está no php.ini, portanto abra ele no seu editor de texto e faça uma busca por "short_open_tag", encontre a linha e altere o valor da configuração.

 

Não sei o motivo, mas no Mac OS o padrão (pelo menos da minha instalação) foi a short_open_tag desabilitada. Quer saber mais sobre o assunto? Documentação do PHP.

Javascript Rock

O  Dmitry Baranovskiy's escreveu um RAP do Javascript e John Fawcett fez esta maravilhosa obra de transformar a letra em rock!

Tomei a liberdade de traduzir a letra para o português, fiquem a vontade para sugerir melhorias na tradução.

Letra – Javasript Rock

You code in JS, but you mixing the types
And always forget the syntax for "splice".
To type "double equal" is like rolling the dice
And you scared to death … of prototypes

Você programa em JS mas você mistura os tipos
E você sempre esquece a sintaxe do splice
Escrever "igual igual" é como jogar dados
E você morre de medo de usar prototype


It's time to stand up and get some respect,
Just go to ECMA and start reading spec.
Unpuzzle, unlock it, uncode and decrypt
And gain yourself power of true JavaScript

É hora e levantar e ganhar algum respeito
Vá para o ECMA e comece a ler as especificações
Desembaralhe, desbloqueie, uncode e decodifique
E ganhe você mesmo o poder do verdadeiro Javascript

You add number to string and string to array
Divide it by object (you know it's ok)
The prototype chain you can see through the code…
It was a great journey from Netscape to Node.

Você adiciona número a string e string ao array
Divide por um objeto (você sabe que está ok)
Com o prototype você pode ver todo o código
Foi uma grande jornada do Netscape ao Node

 

O vídeo foi dica do grande Clécio no Facebook.

Se você gosta de músicas falando de tecnologia precisa conhecer o SEO RAP.

Zen Coding agora é Emmet

Emmet é uma ferramenta que substitui o Zen Coding, uma série de snippets de código que tornam o desenvolvimento mais ágil.

 

Nunca fui um adepto fervoroso do Zen Coding, tinha ele instalado mas não aproveitava muito o que ele tinha para oferecer. Agora, trabalhando apenas como freelancer, resolvi apostar mais no Emmet para ver se me ajuda a produzir mais.

Para mais informação, leia também: