Analista Programador PHP – BSI

Cargo: Analista Programador PHP

Necessário: Experiência com PHP 5,MYSQL 4 X, CMS Joomla 1.5.

Desejável conhecimento em desenvolvimento de plugins, módulos e componentes , conhecimento em ambientes Linux e Servidor Web Apache.

Local de Trabalho: Alto de Pinheiros – SP

Período: 3 meses com possível prorrogação.

Valor: Em aberto

Interessado? envie e-mail para ligia.moura@bsitecnologia.com.br

Utilizando Template_Controller no Kohana

O Kohana utiliza o padrão MVC para a construção de aplicações, e nas views é que toda a informação é mostrada em nossa aplicação. Todo o HTML, CSS, JS (e não só eles, como também qualquer XML, JSON, REST) é enviado pela view.

O Kohana tem um bom suporte nas views, inclusive para nested views, porém hoje vamos falar da Template_Controller. Quando você vai desenvolver um site/sistema/aplicação que tem um layout padrão, a Template_Controller é a ferramenta ideal. Veja como é simples utilizar:

Vamos criar um controller chamado Teste em application/controllers/teste.php

<?php defined('SYSPATH') OR die('No direct access allowed.');
class Teste_Controller extends Template_Controller {

	// Você pode especificar qual template deseja utilizar, opcionalmente
	public $template = 'view_padrao';

	public function index()
	{
		$this->template->titulo		= 'Teste';
		$this->template->texto		= 'Lorem ipsum dolor ...';
	}
}

Por padrão, o Kohana invoca uma view chamada Template que deve estar em /application/views/template.php
Você pode facilmente mudar qual template deverá ser chamado, como fizemos no exemplo acima usando a view view_padrao

Na view que você especificar, você pode montar toda a estrutura que terá sua aplicação como você faria sem qualquer framework, utilizando esta view como template para seu projeto. Há mais exemplos de uso na documentação oficial.

Simples, não? É Kohana!
E é por isso que eu gosto :)

Kohana bundle for Textmate/e-texteditor

If you program in PHP using Kohana and as editor TextMate (Mac) or e-Texteditor (Win) this bundle is for you!
http://code.google.com/p/kohana-bundle/

How to install?

  1. Download
  2. Unzip
  3. Just copy the bundle to the “Bundles” folder in the user settings application directory, usually something like …
    • “C:\Documents and Settings\[username]\Application Data\e” or
    • “C:\Users\[username]\Application Data\e” or
    • “C:\Users\[username]\AppData\Roaming\e”
  4. Note: That bundles located under the “user settings application” directory, have precedence over e’s default bundles, which are located in e’s installation directory, e’s installer will overwrite all changes which are done in e’s installation directory!

Vale a pena investir em Ruby on Rails? Django?

Vejo muita gente que já desenvolve pra web ficar seduzida com as facilidades de alguns frameworks que estão na moda, que estão no topo da mídia especializada. Não é a toa que Ruby on Rails e Django realmente estão neste círculo de modinha, pois eles realmente facilitam a vida do programador.

Existem inúmeros artigos malhando o pau no PHP – vamos falar a verdade, todo programador web que se preze ao menos já programou algo em PHP, a não ser que você só viva no mundinho do Mac – por ele não ser produtivo quando comparado a Django ou ROR. Porém muitos esquecem que Django e ROR não são linguagens de programação, a maioria quando lê estes artigos simplesmente ignora que temos Pyton e Ruby por trás desta brincadeira.

Ora, como assim Bial?
Então o correto é comparar frameworks PHP com ROR e Django?
Sim, porque estamos falando de frameworks e não de linguagens de programação.

Neste quesito quem inovou muito foi o Ruby on Rails, tanto que frameworks PHP vieram a implementar e até copiar seu comportamento e algumas funcionalidades, como por exemplo o CakePHP.

Tá, mas eu preciso aprender uma nova linguagem?
Não necessariamente, há frameworks PHP que podem atender perfeitamente muitas funcionalidades bem bacanas do ROR e Django sem que você precise ter um tempo dedicado a uma nova linguagem e o seu tempo de maturação e experiência nesta nova empreitada. Um dos frameworks que utilizamos com boa frequencia e que nos dá agilidade no código com uma fácil escalabilidade e boa manutenção, é o Kohana PHP. Um framework totalmente strict PHP5, com suporte MVC e ORM, URL limpas e de uma pequena curva de aprendizado (eu diria que você trabalha efetivamente nele em questão de 1 ou 2 dias, é muito rápido até pra quem nunca viu MVC).

Não vou postar aqui um tutorial de “como criar um blog em 5 minutos”, porque isto já existe. Mas vou mostrar da mesma forma que a galera do Rails gosta de mostrar que são produtivos e vou mostrar como podemos trabalhar com uma tabela de produtos de forma muito fácil no Kohana. Para isto, precisamos criar nosso model:

class Produto extends ORM {}

Não, eu não esqueci código!
É só isto mesmo e tudo já funciona, legal não?

Para quem já conhece MVC, veja como é moleza trabalhar com os controllers

class Produto_Controller extends Controller {
//	Listando todos os produtos
public function todos(){
$objProduto = new Produto();
print_r $objProduto->find_all();
}
}

E nem precisei escrever uma linha de SQL! E você pode acessar isto em http://seusite.com/produto/todos. Note que o sistema de URL’s é limpo e bem prático. Veja outro exemplo onde acessamos algum produto pelo código

class Produto_Controller extends Controller {
//	Listando todos os produtos
public function todos(){
$objProduto = new Produto();
print_r $objProduto->find_all();
}
//	Procurando um produto pelo ID
public function procurar($id){
$objProduto = new Produto($id);
print_r $objProduto;
}
}

Se acessarmos http://seusite.com/produto/procurar/2 o sistema irá localizar o produto com o ID=2 sem que você precise escrever uma única linha de código SQL para isto. Muitos frameworks trabalham com recursos fantásticos que novatos adoram, como por exemplo a automágica para gerar telas administrativas e facilidades como gerar o banco a partir dos models, e fazer deploy por linhas de comando.

Porém quando você trabalha profissionalmente, geradores de código não são boas soluções para seus problemas, e felizmente em frameworks como o Kohana não precisamos de geradores de código automágicos para ter produtividade, pois temos controle real da aplicação sem comprometer agilidade e manutenção do código, sem contar que não são necessários escrever arquivos de deploy e executar tarefas em linha de comando. Você simplesmente ativa a aplicação no modo produção, e tudo está pronto no servidor.

Enfim, este não é um post para ensinar Kohana a fundo, pois há tutoriais disponíveis para isto. Nem muito menos para falar mal do Rails ou do Django, que estão na sua fase de vitrine. Porém, é pra mostrar a você que não é preciso aprender uma nova linguagem para ter produtividade no desenvolvimento para web, se você já programa em PHP.

Este artigo teve seus links propositalmente apontados para versões nacionais dos portais de linguagens/frameworks.

Kohana Documentation in CHM

If you are a webdeveloper too, and write some code in Kohana in a Windows environment: you need a documentation in CHM format!
To facilitate things, I decided that compile all the kohana official documentation in a CHM file and i’m sharing with the community!

Download and share with your friends too!
This site use Portuguese as default language, but this content would be better distributed if I write in English ;)

Projeto PHP Counter3

Atenção desenvolvedores e entusiastas de PHP. Vi no site do PHP-DF uma chamada para participação do Projeto PHP Counter. Segundo o site do projeto, “o objetivo do projeto é ser uma referência para o mercado PHP mundial, fornecendo dados estatísticos que propiciarão a análise e evolução do mercado através da atuação em conjunto com grupos de usuários, empresas e profissionais“.

Esse tipo de iniciativa pode ser muito benéfica para a comunidade de profissionais da linguagem. Quando fiz meu projeto final, tive muita dificuldade em encontrar boas referências de utilização do PHP, assim como estatísticas para justificar o uso da linguagem.

Participem!

A morte do PHP 4

A versão 4 do PHP, lançada no ano 2000, foi a que contribuiu definitivamente para que ela se tornasse o que é hoje, teve sua morte decretada no dia 07/08/08 (quase que cai no dia 8 também) com o lançamento de sua última release, a 4.4.9.

Esta versão, que trouxe consigo o primeiro Zend Engine, contribuiu para o crescimento do PHP até ele se tornar a linguagem web mais utilizada no mundo, segundo ranking da Tiobe Software e, apesar de estar perdendo espaço continuamente para outras versões mais novas, ainda está presente em diversos ambientes espalhados por aí.

A princípio, a sugestão dos desenvolvedores da linguagem era de que novas releases do PHP 4 só fossem realizadas para correções de falhas de segurança, mas chegaram a conclusão de que isto já vinha sendo feito no último ano, e que não havia mais razão para dar continuidade ao desenvolvimento.

Sinceramente, acredito que esta seja uma decisão até tardia, uma vez que o PHP 5 foi lançado em 2004. A morte da versão anterior deve estimular os desenvolvedores e administradores de sistemas a atualizar suas aplicações/servidores, até por uma questão de segurança, além de todos os benefícios já envolvidos em relação à evolução do PHP.

Vida longa ao PHP 5+, e que venha o 6.

Lançado Kohana Framework 2.2

Os desenvolvedores do Kohana escolheram uma data curiosa para o lançamento da versão 2.2 do framework, 08/08/08, competindo com a abertura dos jogos olímpicos da China (que ganhou medalha de ouro chegando na frente, uma vez que o dia lá começa bem antes do que por aqui).

Com a nova versão a promessa de abandonar ainda mais alguns vestígios do seu “pai”, o Code Igniter, como a remoção da classe Loader. Além disso, novos módulos foram implementados como o de Compressão de Arquivos, Integração com Google Maps e Captcha, dentro outros.

Visite o site oficial do Kohana para mais informações ou para fazer o download da nova versão.

Lambda Functions/Closures no PHP 5.3

Das diversas alterações anunciadas no lançamento da Alpha 1 do PHP 5.3, a que mais me chamou a atenção foi, sem dúvidas, a implementação de “Lambda Functions/Closures“. Mais até do que a implantação de Namespaces, que foi tão discutida por aí que não deve ter causado nenhum impacto mesmo.

Se você ao ler isso, assim como eu ao ler a notícia no php.net, está se perguntando: “ok, mas o que é isso afinal?”, acho que um trecho de exemplo de código vale mais do que mil palavras:

$variavel = function () { echo "Hello World"; };
$variavel ();

Pronto. Isso é, nada mais, nada menos, do que um Hello World com “lambda function”. Você pode estar pensando que já viu isso em algum lugar e tem toda razão. Se você desenvolve JavaScript há algum tempo, provavelmente já viu esse tipo de atribuição, principalmente para adicionar uma funcionalidade a um evento em um objeto.

Assim como no JavaScript, você poderá passar parâmetros para a função. Usando mais uma vez o famoso Hello World:

$variavel = function ($string) { echo $string; };
$variavel ("Hello World");

Indo mais além, você pode definir quais variáveis de fora do escopo da função, serão utilizadas lá dentro, e têm comportamento idêntico ao dos parâmetros de uma função, isto é, elas são, na verdade, copiadas para dentro do escopo da função e, caso queira, você pode passá-las por referência, utilizando o caracter &:

$hello = "Hello";
$world = "Newton";
$variavel = function () use ($hello, &$world)
{
	$hello = "Hi";
	$world = " World";
	echo $hello . $world; // echoa "Hi World"
};
$variavel ();
echo $hello . $world; // echoa "Hello World"

No exemplo acima, definimos as strings $hello e $world. Depois, chamamos a função, informando que usaríamos as mesmas variáveis, sendo que $world está sendo passada por referência. Ainda dentro da função alteramos as duas e exibimos na tela. Após a execução da função, exibimos novamente as variáveis $hello e $world, sendo que a primeira foi alterada apenas dentro do escopo da função e a segunda, passada por referência, sofreu alteração (incluímos o espaço ali pra quem não notou).

Muito interessante a implementação da chamada da função, que acabou ganhando aplicação em objetos, que, ao serem chamados no formato $objeto(), chama automaticamente o método mágico __invoke() da classe:

class Objeto
{
	public function __invoke()
	{
		echo "Hello Objeto";
	}
}
$objeto = new Objeto
$objeto (); // exibe na tela "Hello Objeto"
// lembro que "echo $objeto;" continuará chamando __toString()

Confesso que, a primeira vista, não consegui achar utilidade nenhuma pra isso, além de uma forma diferente de trabalhar com funções, principalmente em chamadas de callbacks (call_user_func()), onde você passaria uma variável ao invés de um array ou uma string. Porém, comentando o assunto por aí, alguns desenvolvedores se mostraram entusiasmados com a novidade. Minha recomendação é aquela padrão: use com moderação, somente em casos onde de fato for relevante.

Mais detalhes sobre lambda funcions/closures no wiki do php.net, ou ainda, no anúncio do lançamento da 5.3 alpha 1.

Go PHP 5: Diminuiram as desculpas

Comentei aqui em julho do ano passado sobre o projeto Go PHP 5, que tinha como objetivo migrar diversas aplicações famosas do PHP para PHP 5 Strict, além de divulgar os hospedeiros que passariam a oferecer suporte para a “nova” (lançada em 2004) versão do PHP.

O projeto se encerrou em fevereiro deste ano, mas só me lembrei de dar uma olhada nos resultados agora. Ao que parece, diminuiram as desculpas pra quem ainda não migrou. Além de diversos hosts que passaram a oferecer a nova versão (o que, convenhamos, é o mínimo que poderiam fazer), muitas aplicações famosas também foram migradas. Dentre elas:

Dentre outros como ZenCart, Propel, Typo3, PHP Unit.

Veja a lista completa de projetos e de hosts no site oficial do Go PHP 5.