PHP Jedi

Que o PHP esteja com você!

  • Home
  • Sobre

Tipagem Forte em PHP

Author: ariel

  1. O que é Tipagem
  2. Vantagens e Desvantagens
  3. Técnicas para deixar o PHP tipado fortemente
    1. Tipagem Forte utilizando Type Hinting
    2. Tipagem Forte utilizando SPL_Types
    3. Tipagem Forte utilizando POPOTypeSafe
  4. Referências

O que é Tipagem^

Tipagem é o modo em que o interpretador/compilador de uma linguagem diferencia os tipos de variáveis, como inteiro, string, etc. No PHP, a tipagem é “dinâmica” ou “fraca”, isto é, você pode executar o código abaixo, que ele irá retornar “20″:

  1. <?php
  2. $a = "10";
  3. echo $a * 2;
  4. ?>

Neste artigo serão descritos três métodos para utilizar tipagem forte em PHP.

Vantagens e Desvantagens^

Não há um consenso na comunidade de programadores PHP se a tipagem fraca do PHP é boa ou não e isto é assunto de vários flames em fóruns. Porém, pode-se enumerar vantagens e desvantagens do uso, não entrando no mérito se uma é melhor do que a outra.

Vantagens de Tipagem Forte (C++, Ruby)

  • Pode assegurar a regra de negócio pelo tipo da variável/atributo
  • Evita erros na compilação/interpretação, ao contrário da execução

Vantagens de Tipagem Fraca (PHP, Python):

  • Menos burocracia
  • Mais flexibilidade

Técnicas para deixar o PHP tipado fortemente^

Tipagem Forte utilizando Type Hinting^

Desde o PHP 5 é possível forçar um tipo de parâmetro em métodos, como exemplificado abaixo:

  1. public function teste(NomeDaClasse $var) {
  2.         echo $var->teste2();

No exemplo, se for passado uma variável de um tipo diferente de “NomeDaClasse”, o PHP produzirá um Fatal Error.

Isso é útil para definir regras de negócios orientada a objeto, porém não exclui as fraquezas do PHP, por não tratar tipos básicos como int e string além de ser somente útil em atributos, deixando as variáveis de fora.

Tipagem Forte utilizando SPL_Types^

É uma extensão PECL que permite trabalhar com tipos básicos fortemente tipados, como no exemplo abaixo:

  1. <?php
  2. $int = new SplInt(3);
  3. $float = new SplFloat(3.151521);
  4. $float += $int;
  5. $float = '1';
  6. ?>

O código acima irá retornar uma exception UnexpectedValueException.

Tipagem Forte utilizando POPOTypeSafe^

Usando as classes POPOTypeSafe e POPO descritas no artigo typesafe objects in PHP, escrito por Jan Kneschke, é possível criar classes com atributos tipados. Veja o exemplo abaixo:

  1. <?php
  2. class Pessoa extends POPOTypeSafe {
  3.         /** @var int */
  4.         public $idade;
  5.         /** @var string */
  6.         public $nome
  7. }
  8. $e = new Pessoa();
  9. $e->nome = “Ariel”;
  10. $e->idade = “21″;
  11. ?>

No exemplo acima, a última linha irá gerar uma Exception. O tipo do atributo é descrito pelo comentário.

Referências^

  • http://www.php.net/manual/en/language.types.php
  • http://cstruter.com/blog/44
  • http://www.loudthinking.com/arc/000074.html
  • http://www.slideshare.net/sebastian_bergmann/typesafe-objects-in-php
  • http://jan.kneschke.de/projects/typesafe-objects-in-php/
  • http://en.wikipedia.org/wiki/Type_system
  • http://en.wikipedia.org/wiki/Strongly_typed_programming_language

Tags: tipagem
August 2nd, 2010  |  Posted in Uncategorized  |  1 Comment »

PHAR – O JAR do PHP

Author: ariel

  1. O que é o Phar
  2. Exemplos de uso
  3. Instalação
  4. Tutorial
    1. Habilite a escrita no php.ini
    2. Crie a aplicação de teste
    3. Gere o .php que irá criar o .phar
    4. Teste o arquivo criado, por linha de comando
  5. Configure o Apache para executar arquivos .phar
  6. Executando .phar pelo navegador sem usar o Apache.
  7. Outras Funções
  8. Referências

O que é o Phar^

Análago ao .jar do Java, o Phar é utilizado para encapsular arquivos .php e outros em um único arquivo .phar. Uma aplicação inteira pode ser distribuida e executada em um único arquivo, junto com seus arquivos de auxiliares como imagens, css, etc. Não existe ferramenta para gerar .phar, estes são gerados pela classe Phar.

Exemplos de uso^

  • Publicar sua aplicação inteira com somente um arquivo;
  • Usar como um padrão para distribuição de plugins/drivers/etc. para uma aplicação;
  • Gerar arquivos de instalação “auto-instaláveis”.

Instalação^

O Phar já vem junto com o PHP desde a versão 5.3.0. Porém, nas versões anteriores é possível instala-lo através de uma extensão, como visto no seguinte link: http://pecl.php.net/package/phar.

Tutorial^

Neste tutorial será mostrado passo-a-passo como gerar um arquivo .phar a partir de arquivos .php e como executa-lo pelo navegador.

Habilite a escrita no php.ini^

Por razões de segurança, a geração de arquivos .phar é desabilitada por padrão no php.ini. Para habilitar a geração, mude a configuração phar.readonly para Off. Em um servidor de produção não é necessário deixar essa configuração inativa.

Crie a aplicação de teste^

index.php

  1. <?php
  2. include(‘include.php’);
  3. funcao();
  4. ?>

include.php

  1. <?php
  2. function funcao() {
  3. echo ‘Sim, funciona!’;
  4. }
  5. ?>

Gere o .php que irá criar o .phar^

gera_phar.php

  1. <?php
  2. // Cria o arquivo e define o tipo dele como phar não comprimido
  3. $phar = new Phar(‘testephar.phar’, 0, ‘testephar.phar’);
  4. $phar = $phar->convertToExecutable(Phar::PHAR);
  5.  
  6. // Adiciona os arquivos index.php e include.php no testephar.phar
  7. $phar->addFile(‘index.php’);
  8. $phar->addFile(‘include.php’);
  9.  
  10. // Define o index.php como arquivo padrão ao executar
  11. $phar->setMetaData(array(‘bootstrap’ => ‘index.php’));
  12. ?>

Execute o gera_phar.php, na linha de comando ou pelo navegador:

  1. $ php gera_phar.php

Teste o arquivo criado, por linha de comando^

Agora nosso arquivo já pode ser executado por linha de comando:

  1. $ php testephar.phar

Deve retornar:

  1. Sim, funciona!

Configure o Apache para executar arquivos .phar^

Se você acessar pelo navegador o arquivo .phar agora, ele irá baixar o arquivo ao invés de interpreta-lo, portanto precisamos configurar ou Apache (ou outro Servidor Web).

Adicione a seguinte linha ao arquivo httpd.conf:

  1. AddType application/x-httpd-php .phar

Após reiniciar o Apache, o .phar já pode ser executado pelo navegador, como mostrado abaixo:

Executando .phar pelo navegador sem usar o Apache.^

É possível executar arquivos .phar pelo navegador sem alterar as configurações do Apache, basta renomear o arquivo testephar.phar para testephar.phar.php, facilitando a distribuição de aplicações.

Outras Funções^

Além do que foi visto neste artigo, o pacote .phar tem várias funções, veja algumas delas:

  • Incluir arquivos de diretórios recursivamente;
  • Diversos tipos de compactação, como: zip, tar, gzip, bz2;
  • Adicionar e excluir arquivos on-the-fly;
  • “Incluir” arquivos de dentro do .phar a partir de um .php que esteja fora;
  • Utilizar funções de tratamento de arquivos (como fopen, etc.) dentro do .phar;
  • Converter arquivos .tar.gz (ou outros) em .phar prontos para execução.

Referências^

  • http://www.php.net/manual/en/book.phar.php

Tags: phar, tutorial
July 30th, 2010  |  Posted in Uncategorized  |  No Comments »

  • Sobre o Blog

    Escrito e mantido por Ariel Patschiki, Empreendedor e Desenvolvedor Web.
  • Núvem de Tags

    phar tipagem tutorial
  • Blogroll

    • Blog do Caio
    • Blog do Daniel
    • Blog do Finger
  • Twitter

      @arielpatschiki

    Copyright © 2010 - Ariel Patschiki | Entries (RSS) | Comments (RSS)