PHP Jedi

Que o PHP esteja com você!

  • Home
  • Sobre

Posts Tagged ‘tipagem’

Tipagem Forte em PHP

Monday, August 2nd, 2010

  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
Posted in Uncategorized | 2 Comments »

  • Sobre o Blog

    Escrito e mantido por Ariel Patschiki, Empreendedor e Desenvolvedor Web.
    Sócio da Agência Digital MobVox.
  • Últimos Posts

    • O que o PHP não tem (e que nunca terá)
    • Backup em CakePHP
    • Aplicações Desktop em PHP: WinBinder versus PHP-GTK
    • Codificação de Caracteres – ISO-8859-1 versus UTF8
    • Sistemas Corporativos em CakePHP – Separação de Módulos
  • Projetos OpenSource

    • Cake Database Backup
    • Custom Finds
  • Núvem de Tags

    backup básico cakephp comparativo funcionalidade phar sistemas corporativos tipagem tutorial
  • Blogroll

    • ActiveInfo, empresa do Finger
    • Blog do Caio
    • Blog do Ciro Feitosa
    • Blog do Daniel
    • Blog do Finger
    • MobVox
    • Neckness, b2c da Monica
    • Poppy Convites, empresa da Guid
    • Web Töten, empresa do Jefferson
  • Twitter

      @arielpts

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