Quando escrevi uma pequena review, intro­dutória e muito pes­soal, sobre o codeigniter, com algum desabafo sobre a sua inter­ac­tivi­dade e curva de apren­diza­gem, fui vio­len­ta­mente ;) agre­dido de maneira ver­bal – desde acusações de incom­petên­cia a erros de por­tuguês, só fal­tou as ameaças de morte. O caso surpreendeu-me pela neg­a­tiva, sou hon­esto, e durante muito tempo coibiu-me de efec­tuar outro tipo de reviews ligeiras sobre este tipo de soft­ware. Até me desmo­tivou de escr­ever neste blog durante uns tempos.

No entanto, sinto que isso não me ajuda a mim, nem a quem poderá ter algum inter­esse em saber infor­mações sobre as mes­mas pelo que irei fazer nova tentativa.

 Porquê uma framework ?

As frame­works para desen­volvi­mento em web têm ganho pop­u­lar­i­dade nos últi­mos 4 anos e a ver­dade é que estas frame­works trazem uma série de bene­fí­cios face ao desen­volvi­mento nor­mal de raiz das aplicações.

 Model-View-Controller (MVC)

As maio­r­ias das frame­works de PHP baseiam-se no padrão de design con­hecido por Model-View-Controller (MVC). Este padrão de design usa código ori­en­tado a objec­tos para que­brar uma apli­cação em blo­cos modulares:

  • Model – O Model, ou Mod­elo, é a parte da apli­cação que mapeia e tra­balha com a base de dados;
  • View – O View, ou Vista, con­trola como as pági­nas HTML são cri­adas ou ren­der­izadas;
  • Con­troller – O Con­troller, ou Con­tro­lador, é o que deter­mina a lóg­ica do negó­cio ou proces­sos da aplicação.

Esta definição per­mite, só por si, uma série de regras de desen­volvi­mento da apli­cação que resulta num código mais sim­ples e mais limpo, para além de ser mod­u­lar. É mais sim­ples criar novas fun­cional­i­dades, ou alterar fun­cional­i­dades exis­tentes quando todo o código se encon­tra no seu próprio módulo.

Torna tam­bém muito mais sim­ples a cri­ação de doc­u­men­tação da apli­cação e a gestão de cor­recções, ou seja, a manutenção do próprio código.

Código PHP sep­a­rado do HTML

Um dos maiores prob­le­mas para o tra­balho do devel­oper é a facil­i­dade de uti­liza­ção de código php em pági­nas html. Torna toda a apli­cação difí­cil de gerir e uma dor de cabeça para quem sub­sti­tui o programador.

Para além disso blo­queia o design num for­mato impos­sível de del­e­gar a um designer sem que ele acabe por estra­gar o que já foi feito.

As frame­works, todas as que con­heço, fazem uma sep­a­ração do php e do html per­mitindo a interli­gação através de tem­plates, uma solução bem mais inteligente.

Fluxo Model View Controller

Orga­ni­za­ção da Aplicação

A maio­ria das frame­works esta­b­elece à par­tida uma deter­mi­nada orga­ni­za­ção de pas­tas e ficheiros. Isto retira-nos o tra­balho de perder tempo a definir a estru­tura do sis­tema de ficheiros e dá-nos a pos­si­bil­i­dade de  tra­bal­har noutras apli­cações com a mesma frame­work sem perder muito tempo a anal­isar como está a estru­tura definida nesta aplicação.

Bib­liote­cas Existentes

Exis­tem imen­sas bib­liote­cas que per­mitem um desen­volvi­mento mais rápido com a segu­rança que estas já foram bas­tante tes­tadas e utilizadas.

Val­i­dação de for­mulários, fil­tros aos dados de entrada e saída, abstração da base de dados através de mod­e­lação, cap­tura de deter­mi­na­dos critérios e exe­cução de código (trip­wiring), gestão de sessões, email, cal­endários, pag­i­nação e nave­g­ação, etc…

Fer­ra­men­tas de Performance

Exis­tem fer­ra­men­tas que, em uti­liza­ção com a frame­work, per­mitem dar um desem­penho extra à apli­cação. Estou a pen­sar em caching, car­rega­mento dinâmico (dynamic load­ing), pro­fil­ing, bench­mark­ing, etc.

Desen­volvi­mento Acelerado

Eu diria que o tra­balho do devel­oper está definido em 4 partes que não têm direc­ta­mente as mes­mas proporções:

  • 15% — Planea­mento interno do desen­volvi­mento, após a recepção dos requisitos
  • 30% — Desen­volvi­mento das funcionalidades
  • 10% — Testes das funcionalidades
  • 45% — Cor­recção de bugs

A uti­liza­ção de uma frame­work pode trazer bene­fí­cios a todas as áreas do desenvolvimento:

  1. Planea­mento — A estru­tura e orga­ni­za­ção da frame­work não só a nível do filesys­tem como tam­bém da orga­ni­za­ção do código nos seus ficheiros;
  2. Desen­volv­mento de Fun­cional­i­dades - Code Wiz­ards, Bib­liote­cas Existentes…
  3. Testes — Unit Test­ing, Benchmarking
  4. Bug Squash­ing — Só o facto de se uti­lizar uma frame­work, pode cor­tar bas­tante na capaci­dade de erro do devel­oper. O tempo de encon­trar um bug numa frame­work é bas­tante reduzido dado a atom­i­ci­dade e mod­u­lar­iza­ção do desenvolvimento.

Van­ta­gens de uma frame­work PHP

Segu­rança

A segu­rança de uma apli­cação deter­mina larga­mente o seu sucesso. Todas as frame­works que con­heço par­tilha de um largo número de val­i­dações para reduzir a ameaça do com­pro­misso de inte­gri­dade. Injecção SQL, inte­gri­dade de HTML ger­ado, ataques XSS e inte­gri­dade das cook­ies são algu­mas das téc­ni­cas pre­venidas em maior parte das frameworks.

Quais as frame­works que existem ?

Ape­sar de preferir o Yii, coloco aqui links para todas as Frame­works mais con­heci­das actualmente:

CakePHP

CodeIgniter

Sym­fony

Yii

Zend

Porquê a minha escolha de Yii ?

Se notarem, no site PHP Frame­works, podem avaliar as com­para­ções das várias frameworks.

A minha sim­pa­tia pelo Yii começou na cri­ação de um pequeno site para um amigo meu que neces­si­tava de algo muito sim­ples mas que exi­gia uma base de dados. Não querendo optar por nen­huma apli­cação exis­tente, optei por aproveitar a opor­tu­nidade e estu­dar as frameworks.

Tive uma exper­iên­cia pouco agradável com o codeigniter, tanto nos meus testes como depois na review pes­soal que fiz (como podem facil­mente com­pro­var), e após alguns testes desco­bri a facil­i­dade o Yii de criar um crud para uma base de dados. Foi uma questão depois de preencher as lacu­nas. Num fim de sem­ana estava feito.

O site em si não era com­plexo, mas eu que­ria dar algo de qual­i­dade e acabou por ficar engraçado.

Con­clusão

Inde­pen­den­te­mente da vossa opinião sobre qual a frame­work que dev­erão uti­lizar, algo que deve ser comum (ou talvez não!) a todos será a recomen­dação do uso de uma frame­work, que resul­tará num aumento em pro­du­tivi­dade e mel­ho­ria na cri­ação do código.

Espe­cial­mente para quem faz, de parte da sua vida, a cor­recção do código dos out­ros, deve saber que a minha recomen­dação é mais do que certeira. 

Um abraço e tudo de bom,

 

 

1 comments
Jonathan Fontes
Jonathan Fontes

Olá Ricardo, Tu já me conheces perfeitamente e já sabes qual é a minha opinião, adoro Codeigniter! Não vou gritar sacrilegio, foi daquelas que mais gostei. Do outro dia estive a tentar perceber o Yii e ainda não percebi muito bem, ou é demasiado simples para eu perceber :D, na brincadeira.

 

E já agora peço desculpa pelo o meu afastamento, mas estive umas dificuldades como já deves saber.

 

Espero que continues com bons tópicos!

 

Jonathan Fontes