sexta-feira, 27 de junho de 2008

PHP - Principais características

A linguagem PHP é uma linguagem de programação de domínio específico, ou seja, seu escopo se estende a um campo de atuação que é o desenvolvimento web, embora tenha variantes como o PHP-GTK. Seu propósito principal é de implementar soluções web velozes, simples e eficientes.
Características:

• Velocidade e robustez
• Estruturado e orientação a objeto
• Portabilidade - independência de plataforma - escreva uma vez, rode em qualquer lugar;
• Tipagem fraca
• Sintaxe similar a Linguagem C/C++ e o PERL

Exemplo da sintaxe

"2") // se a variavel $x igual a 2 OU maior que 2
{
echo 'Olá mundo!'; // escreve "Olá mundo!"
} else { // Se não.
print('Adeus mundo!'); // escreve 'Adeus mundo!', print pode ser usado com ou sem parênteses.
}

?>

PHP 5

Em junho de 2004 foi lançada a versão 5 do PHP, introduzindo um novo modelo de orientação a objeto, como por exemplo:

• Reformulação dos Construtores e adição de Destrutores

O construtor



O destrutor



• Visibilidade de acesso
• Abstração de objeto
• Interfaces de objetos

O tratamento de objetos do PHP foi completamente reescrito, permitindo um desempenho melhor e mais vantagens. Enquanto na versão anterior era preciso muito esforço para atender à orientação a objetos e aos padrões de projectos (alguns não eram possíveis), o PHP 5 veio para sanar essa deficiência. Ainda sofre nesse sentido, contudo, por problemas devido a ser uma linguagem de tipagem fraca.

Indução de tipo

Nesse sentido, foi adicionada uma característica chamada de indução de tipo, de acordo com a qual podemos ter uma certa tipagem quando passamos objetos aos parâmetros de uma função (ou método), algo inconcebível na versão anterior.

Por exemplo:



Visibilidade

A visibilidade de uma propriedade ou método pode ser definida com os seguintes modificadores de acesso: public, protected ou private. Itens declarados como públicos podem ser acessados pelo objeto (instância da classe). Membros protegidos estão acessíveis às classes filhas (herdadas). A visibilidade privada limita a apenas a classe que define o atributo ou método.

Por exemplo:

class ClassePai
{
private $atributoPrivado;
protected $atributoProtegido;

public function imprimePai()
{
$this->atributoPrivado = 'Privado';
echo $this->atributoPrivado;
}
}

class ClasseFilha extends ClassePai
{
public $atributoPublico;

public function imprimeFilho()
{
$this->atributoProtegido = 'Protegido';
echo $this->atributoProtegido;

}
}

$obj = new ClasseFilha();// Estanciando a classe
echo $obj->imprimePai(); // Exibe na tela 'Privado'
echo $obj->imprimeFilho(); // Exibe na tela 'Protegido'

// É permitido o acesso pelo objeto aos atributos públicos:
$obj->atributoPublico = 'Sobrenome: Muzzy';
echo $obj->atributoPublico; // Exibe na tela 'Sobrenome: Muzzy'

Outros exemplos

Ler dois valores registrados em variáveis e indicar o maior

$valor2) {
echo "A variável $valor1 é maior que a variável $valor2";
} else if ($valor2 > $valor1) {
echo "A variável $valor2 é maior que a variável $valor1";
} else {
echo "A variável $valor1 é igual à variável $valor2";
}
?>

Mostrar na página os dez primeiros números

PHP – Linguagem de Programação

Histórico

A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Em 1997 foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL.

Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3 que contava com o primeiro recurso de orientação a objetos, que dava poder de alcançar alguns pacotes, tinha herança e dava aos desenvolvedores somente a possibilidade de implementar propriedades e métodos.

Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder à máquina da linguagem e maior número de recursos de orientação a objetos. O problema sério que apresentou o PHP 4 foi a criação de cópias de objetos, pois a linguagem ainda não trabalhava com apontadores ou handlers, como é a linguagem Java.

O problema fora resolvido na versão atual do PHP, a versão 5, que já trabalha com handlers. Caso se copie um objeto, na verdade copiaremos um apontador, pois, caso haja alguma mudança na versão original do objeto, todas as outras também sofrem a alteração, o que não acontecia na PHP 4.

Trata-se de uma linguagem extremamente modularizada, o que a torna ideal para instalação e uso em servidores web. Diversos módulos são criados no repositório de extensões PECL (PHP Extension Community Library) e alguns destes módulos são introduzidos como padrão em novas versões da linguagem. É muito parecida, em tipos de dados, sintaxe e mesmo funções, com a linguagem C e com a C++. Pode ser, dependendo da configuração do servidor, embarcada no código HTML. Existem versões do PHP disponíveis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, IRIX e Solaris.

A Wikipédia funciona sobre um software inteiramente escrito em PHP, usando bases de dados MySQL: o MediaWiki.

Construir uma página dinâmica baseada em bases de dados é simples com PHP ,(em parte, vale lembrar), este provê suporte a um grande número de bases de dados: Oracle, Sybase, PostgreSQL, InterBase, MySQL, SQLite, MSSQL, Firebird, etc., podendo abstrair o banco com a biblioteca ADOdb, entre outras.

PHP tem suporte aos protocolos: IMAP, SNMP, NNTP, POP3, HTTP, LDAP, XML-RPC, SOAP. É possível abrir sockets e interagir com outros protocolos. E as bibliotecas de terceiros expandem ainda mais estas funcionalidades.

Existem iniciativas para utilizar o PHP como linguagem de programação de sistemas fixos. A mais notável é a PHP-GTK. Trata-se de um conjunto do PHP com a biblioteca GTK, portada do C++, fazendo assim softwares inter-operacionais entre Windows e Linux. Na prática, essa extensão tem sido muito pouco utilizada para projetos reais.

Fonte: Wikipédia.

sexta-feira, 13 de junho de 2008

Sistemas de Templates Engines - SMARTY

Introdução

Antes de começarmos a detalhar assuntos técnicos, gostaria de postar alguns artigos básicos, para que leitores menos experientes em PHP venham se familiarizar com alguns conceitos e ferramentas que vamos utilizar com freqüência em nossos artigos, já saindo um pouco da programação procedural e/ou convencional, gostaria de falar um pouco sobre uma das melhores ferramentas para desenvolvimento em PHP, trata-se do SMARTY. Um sistema de templates para PHP que dentre outras funções, destaco a agilidade no desenvolvimento de aplicativos, pois traz a possibilidade de designes e programadores trabalharem no mesmo projeto, ao mesmo tempo de maneira independente/separada.

O que é o Smarty?

O Smarty é um sistema de templates para PHP. Mais especificamente, ele fornece uma maneira fácil de controlar a separação da aplicação lógica e o conteúdo de sua apresentação. Isto é melhor descrito em uma situação onde o programador da aplicação e o designer do template executam diferentes funções, ou na maioria dos casos não são a mesma pessoa.

Por exemplo, digamos que você está criando uma página para web para mostrar um artigo de um jornal. O autor, a manchete, a conclusão e o corpo do artigo são elementos de conteúdo, eles não contém informação alguma sobre como eles devem ser mostrados. Ele são enviados ao Smarty pela aplicação, então o designer do template edita o template e usa uma combinação de tags HTML e tags de templates para formatar a apresentação destes elementos (tabelas HTML, cores de fundo, tamanhos de fontes, folhas de estilos, etc.). Se algum dia o programador precisar alterar a maneira como o conteúdo do artigo é tratado (uma mudança na lógica da aplicação). Esta mudança não afeta o design do template, o conteúdo será enviado ao template exatamente da mesma forma. De modo semelhante, se o designer do template quiser redesenhar completamente os templates, não é necessária nenhuma alteração na lógica da aplicação. Sendo assim, o programador pode fazer mudanças na lógica da aplicação sem a necessidade de reestruturar os templates, e o designer do template pode fazer mudanças nos templates sem alterar a lógica da aplicação.

Um objetivo do projeto Smarty é a separação da lógica do negócio e da lógica da apresentação. Isto significa que os templates podem certamente conter a lógica sob a circunstância que é somente para apresentação. Alguns exemplos são: a inclusão de outros templates, alternação de cores nas linhas das tabelas, colocar o texto de uma variável em maiúsculo, percorrer uma matriz de dados e mostrá-la, etc. são todos exemplos de apresentação lógica. Isto não significa que o Smarty força a separação da lógica de negócios e da lógica de apresentação. O Smarty não tem conhecimento do que é o que em sua aplicação, portanto colocar sua a lógica de negócio no template é problema seu. Caso você deseje que não haja nenhuma lógica em seus templates você pode certamente fazer isso trocando o conteúdo para textos e variáveis somente.

Um dos aspectos únicos do Smarty é seu sistema de compilação de templates. O Smarty lê os arquivos de templates e cria scripts PHP à partir deles. Uma vez criados, eles são executados sem ser necessário uma outra compilação do template novamente. Com isso, os arquivos de template não são 'parseados'(analisados) toda vez que um template é solicitado, e cada template tem a total vantagem de soluções de cache do compilador PHP, tais como: Zend Accelerator (http://www.zend.com/) ou PHP Accelerator (http://www.php-accelerator.co.uk).

Algumas das características do Smarty:

  • Ele é extremamente rápido.
  • Ele é eficiente visto que o interpretador do PHP faz o trabalho mais pesado.
  • Sem elevadas interpretações de template, apenas compila uma vez.
  • Ele está atento para só recompilar os arquivos de template que foram mudados.
  • Você pode fazer funções próprias e seus próprios modificadores de variáveis, assim a linguagem de templates é extremamente extensível.
  • Delimitadores de tag configuráveis, sendo assim você pode usar {}, {{}}, , etc.
  • Os construtores if/elseif/else/endif são passados para o interpretador de PHP, assim a sintaxe de expressão {if ...} pode ser tanto simples quanto complexa da forma que você queira.
  • Aninhamento ilimitado de sections, ifs, etc. permitidos.
  • É possível embutir o código PHP diretamente em seus arquivos de template, apesar de que isto pode não ser necessário (não recomendado) visto que a ferramenta é tão customizável.
  • Suporte de caching embutido.
  • Fontes de template arbitrários.
  • Funções de manipulação de cache customizadas.
  • Arquitetura de Plugin.
Fonte: http://www.smarty.net