Tipos no PHP \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 02 Horas 

 46 Min 

 32 Seg 

   Tempo restante da oferta: 02 46 32 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Tipos no PHP  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Tipos no PHP

 Nesse post explicamos com exemplos tudo o que você precisa saber sobre definição de tipos em parâmetros e retornos de funções e métodos no PHP, além do novo recurso de propriedades de classes tipadas do PHP 7.4.

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/02/17151508/php-elefante-ponte.png)  

Quando começamos a aprender [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "PHP") uma das primeiras características que notamos e que é ensinado na maioria dos cursos sobre a linguagem é a tipagem dinâmica e fraca do PHP.

 Caso não saiba o que é tipagem dinâmica e fraca, aconselho a leitura do artigo que falamos sobre [tipagem](https://www.treinaweb.com.br/blog/quais-as-diferencas-entre-tipagens-estatica-ou-dinamica-e-forte-ou-fraca/). 

Essa característica da linguagem é amada por muitos desenvolvedores, que inclusive defendem que deve ser a filosofia da linguagem e que ela deve ser mantida. Já outra parte das pessoas acreditam que ela gera mais insegurança, uma vez que o programador precisa realizar uma programação mais defensiva, com mais verificações de tipo e validações.

Independente do que os desenvolvedores acham, a verdade é que o PHP hoje caminha cada vez mais para o meio termo. A linguagem não permite definir diretamente o tipo em uma variável, porém possui muitos mecanismos para controlarmos os tipos de dados, principalmente em entradas e saídas de funções e métodos e a partir da versão 7.4 com a tipagem das propriedades de classes. Não fiquem ansiosos, vamos ver na prática como o PHP nos permite trabalhar com esses recursos.

[  ![PHP - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Curso PHP - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/php-fundamentos)

## Tipos no PHP 5

Desde as primeiras versões do PHP 5 ele nos permite fazer o que chamamos de type hints. Esse recurso nos possibilita definir o tipo de um parâmetro de entrada de uma função ou método. Na versão 5.0.0 era possível definir o tipo classe, interface ou a palavra reservada `self` que obriga o parâmetro de entrada ser do mesmo tipo que a classe atual:

```php
class Produto
{
	public $nome;
}

class Cliente
{
	public function comprar(Produto $produto)
	{
		echo "O cliente comprou o " . $produto->nome;
	}
}

$prod = new Produto;
$prod->nome = "Carro";

$cli = new Cliente;
$cli->comprar($prod);

```

Note que no método comprar, antes do nome do parâmetro informamos que ele deve ser um objeto do tipo `Produto`. E se fosse passado um outro tipo de dado, era gerado um erro, mas o programa continuava a execução normalmente.

Na versão 5.1.0 foi adicionado o tipo `array` que permite verificar se um parâmetro de entrada é um array:

```php
function listar(array $cursos)
{
	//
}

listar(array(1, 2, 3));

```

E na versão 5.4.0 a palavra callable para verificar se o parâmetro é invocável. Na prática ele é usado para verificar se podemos executar o parâmetro que recebemos como uma função. Todos os exemplos abaixo são válidos:

```php
//Função que recebe um invocável
function executar(callable $executavel) {
    echo $executavel();
}

$funcao = function() {
    echo "executou a função";
};

//passa a função que está dentro da variável $funcao
executar($funcao);

//passa uma função anônima
executar(function() {
    echo "executou a função";
});

function funcao() {
    echo "executou a função funcao";
};

//passa o nome da função
executar("funcao");

class ClasseExecutavel {
    public function __invoke() {
        return "executou a função dentro da classe";
    }
}

//passa a instancia de uma classe executável
executar(new ClasseExecutavel());

```

Nas versões seguintes, PHP 5.5 e 5.6 nenhuma nova palavra para type hint foi adicionada. Já na versão 7 o PHP trouxe uma série de mudanças importantes.

[  ![Desenvolvedor PHP Júnior](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Formação Desenvolvedor PHP Júnior Conhecer a formação ](https://www.treinaweb.com.br/formacao/desenvolvedor-php-junior)

## Tipos primitivos

A versão 7.0 além de várias outras features, trouxe importantes mudanças em relação a tipos. A partir dessa versão é possível declarar tipos primários (string, inteiro, float e booleano), além dos que já era possível anteriormente:

```php
function pedir(
    string $nome,
    int $quantidade,
    float $valor,
    bool $entregar
) {
    //corpo da função
}

pedir('X Salada', 2, 12.80, true);

```

## Declaração de retorno

A partir do PHP 7.0 é possível indicar o tipo de retorno em funções e métodos, tornando o controle de tipos ainda mais estrito:

```php
function somar(int $num1, int $num2): int
{
    return $num1 + $num2;
}

var_dump(somar(2, 3));

```

## Tratamento de erro para tipo

O erro caso o valor não seja do tipo esperado, tanto na entrada de funções e métodos, quanto no retorno, passou a ser tratado como exceção do tipo `TypeError` a partir do PHP 7.0:

```
Fatal error:  Uncaught TypeError: Argument 1 passed to somar() must be of the type integer, string given, called in [...][...] on line 8 and defined in [...][...]:3

```

Se nenhum tratamento for realizado o script é interrompido, mas existe a possibilidade muito importante de tratar a exceção gerada:

```php
function somar(int $num1, int $num2): int
{
    return $num1 + $num2;
}

try {
    somar("uma string qualquer", 3);
} catch(\TypeError $e) {
    //tratamento necessário

    echo "Tivemos uma exceção de tipos";
}

```

## Tipagem estrita

Sabemos que o PHP por padrão é uma linguagem de tipagem fraca. Isso significa que sempre que possível ele tenta converter o tipo de dado. Veja o exemplo abaixo:

```php
function somar(int $num1, int $num2): int
{
    return $num1 + $num2;
}

echo somar(true, 3); //4

```

A função somar espera dois valores do tipo inteiro, porém no exemplo acima passamos o primeiro valor como sendo um booleano. O PHP converte o valor `true` para 1 e por isso retornou na função o valor 4 sem nenhum tipo de erro.

A característica de tipagem fraca da linguagem acaba meio que invalidando a declaração de tipos. Baseado nisso foi criado a tipagem estrita, uma declaração no início de cada arquivo que torna a tipagem do PHP forte, para valores de entradas e saídas de métodos. Veja o exemplo abaixo:

```php
declare(strict_types=1);

function somar(int $num1, int $num2): int
{
    return $num1 + $num2;
}

echo somar(true, 3);

```

O exemplo acima passará a gerar uma exceção do tipo `TypeError`. A única conversão que foge a regra da tipagem estrita é quando o PHP espera um float, nesse caso é possível enviar um inteiro.

A definição de tipagem estrita não pode ser declarada para o projeto inteiro, deve sempre ser feita por arquivo. Se um arquivo que não declara tipo estrito, chamar uma função em um arquivo que declara tipo estrito a preferência é do arquivo que está chamando, ou seja, sem tipo estrito.

## Anuláveis

A partir da versão 7.1 o PHP permite definir parâmetros de entrada e retornos que aceitam o tipo de dado especificado ou `null`, usando o sinal `?` antes do tipo:

```php
declare(strict_types=1);

function somar(?int $num1, ?int $num2): ?int
{
    if ($num1 === null || $num2 == null) {
        return null;
    }

    return $num1 + $num2;
}

var_dump(somar(null, 3));

```

## Novos tipos

O PHP 7.1 e 7.2 adicionaram mais dois novos tipos, iterable e object respectivamente. O primeiro garante que vamos receber um item que seja possível ser iterado e o segundo que vamos receber um objeto, independente do tipo.

```php
declare(strict_types=1);

function varrer(iterable $numeros): void
{
   foreach($numeros as $chave => $valor) {
       echo "$valor ";
   }
}

varrer([1, 2, 3]);

function ler(object $dados): void
{
   echo $dados->nome;
}

$objeto = new stdClass;
$objeto->nome = 'X salada';
ler($objeto);

```

Note também que no retorno declaramos uma saída chamada `void`. Essa saída é específica para o retorno e significa que não vamos retornar nada na função ou método. Está disponível também a partir da versão 7.1.

## Propriedades tipadas

O PHP 7.4 lançado no final de 2019 implementou uma grande novidade para a linguagem, o suporte a propriedades tipadas. Esse recursos em conjunto com todos os outros que já vimos permite um controle ainda maior de tipos:

```php
declare(strict_types=1);

class Produto
{
    public string $nome;

    public float $preco;

    public int $quantidade;
}

$prod = new Produto;
$prod->nome = "Bike";
$prod->preco = 856.99;
$prod->quantidade = 10;

//TypeError
$prod->preco = "uma string";

```

## Uso de tipos

Conforme falado no início do artigo, muitos desenvolvedores gostam da ideia de usar o PHP com tipagem fraca. Um exemplo de desenvolvedor é o Taylor Otwell, criador do [Laravel](https://www.treinaweb.com.br/blog/o-que-e-laravel/ "Laravel") de um dos [frameworks](https://www.treinaweb.com.br/blog/para-que-serve-um-framework/ "frameworks") mais usados na linguagem. Em tweets e discussões ele já apontou que [não acha que tornar a tipagem forte melhora a qualidade do código](https://twitter.com/taylorotwell/status/793943541349117952 "acha que tornar a tipagem forte melhora a qualidade do código") E que [não pretende usar tipos em parâmetros e retornos no core Laravel](https://github.com/laravel/framework/pull/17786#issuecomment-277725890 "não pretende usar tipos em parâmetros e retornos no core Laravel"). Esses registros são de 2016 e 2017, infelizmente não encontrei mais novos.

Já o [Symfony](https://www.treinaweb.com.br/blog/o-que-e-symfony/ "Symfony"), outro projeto gigante com vários [componentes super importantes para o ecossistema PHP](https://www.treinaweb.com.br/blog/symfony-componentes-o-que-sao-e-qual-sua-importancia-para-o-ecossistema-php/ "componentes super importantes para o ecossistema PHP"), está modificando sua base de código para adicionar os recursos de tipagem mais novos do PHP. Conforme falam nesse post [https://symfony.com/blog/symfony-type-declarations-return-types-and-phpunit-compatibility#added-compatibility-with-all-php-and-phpunit-versions](https://symfony.com/blog/symfony-type-declarations-return-types-and-phpunit-compatibility#added-compatibility-with-all-php-and-phpunit-versions "https://symfony.com/blog/symfony-type-declarations-return-types-and-phpunit-compatibility#added-compatibility-with-all-php-and-phpunit-versions").

Vale lembrar que independente de escolher usar tipos na sua aplicação ou não, é possível usar frameworks e bilbiotecas de ambos os modos, esse é um dos motivos do tipo estrito ser definido por arquivo. Outro ponto é que usar tipos ou não no PHP não define se uma aplicação é melhor que a outra.

## Considerações Finais

O PHP nos permite trabalhar tanto em modo tipagem fraca e sem especificar tipos em absolutamente nenhum lugar, como já é o clássico na linguagem há muito tempo. Quanto usando todos os recursos que vimos nesse post para realizar um controle mais justo dos tipos na aplicação.

Um ponto importante que deve ser observado é a adaptação dos desenvolvedores ao novo modo de programar, principalmente os que já trabalham com PHP há bastante tempo. É natural que exista uma barreira de aceitação, já que a mudança geralmente causa medo, mas também é importante praticar em projetos de teste ou menores, antes de começar a trabalhar em projetos maiores usando essa abordagem.

- [ #Tipagem ](https://www.treinaweb.com.br/blog/tag/tipagem)

Autor

 ![Elton Fonseca](//secure.gravatar.com/avatar/2cee05645357ced0841ce76ba5569c72?d=mm)

## Elton Fonseca

 Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. [@eltonfonsecadev](https://twitter.com/eltonfonsecadev) 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/elton-fonseca)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/uniao-de-tipos-no-php-8-o-que-e-e-como-usar-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     6 anos atrás

    ##  [ União de Tipos no PHP 8: o que é e como usar ](https://www.treinaweb.com.br/blog/uniao-de-tipos-no-php-8-o-que-e-e-como-usar) 

     Aprenda o que é e como utilizar união de tipos no PHP. Recurso conhecido como union types que permite ao desenvolvedor flexibilidade ao trabalhar com tipos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/15113141/como-declarar-variaveis-no-php-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Variáveis no PHP. Acesse e aprenda como declarar! ](https://www.treinaweb.com.br/blog/variaveis-no-php-acesse-e-aprenda-como-declarar) 

     Aprenda como declarar variáveis no PHP, as principais regras de nomeação de variáveis, suas características e tipos básicos de dados da linguagem.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/o-que-sao-extensoes-no-php-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     6 anos atrás

    ##  [ O que são Extensões no PHP ](https://www.treinaweb.com.br/blog/o-que-sao-extensoes-no-php) 

     Aprenda o que são extensões no PHP, como instalar e ativar. Entenda também porque o PHP possui o conceito de extensões e quais são as mais usadas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/06/foreach-no-php-aprenda-ler-arrays-e-outras-estruturas-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Foreach no PHP. Aprenda ler arrays e outras estruturas! ](https://www.treinaweb.com.br/blog/foreach-no-php-aprenda-ler-arrays-e-outras-estruturas) 

     O loop foreach no PHP é uma estrutura de repetição simples e flexível! Aprenda corretamente como utilizar para percorrer arrays e outras estruturas no PHP.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/17150002/arrays-no-php-aprenda-como-declarar-e-acessar-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Arrays no PHP: Aprenda como declarar e acessar! ](https://www.treinaweb.com.br/blog/arrays-no-php-aprenda-como-declarar-e-acessar) 

     Aprenda desde o início como declarar e acessar arrays no PHP. Veja o que são arrays, como trabalhar com array simples, associativo e multidimensional.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/10/object-calisthenics-em-php-parte-2-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     9 anos atrás

    ##  [ Object Calisthenics em PHP - Parte 2 ](https://www.treinaweb.com.br/blog/object-calisthenics-em-php-parte-2) 

     Neste artigo, vamos aprender mais três conceitos sobre object calisthenics e como eles nos ajudam a ter um código melhor e mais conciso.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/O-QUE-E-PHP-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     5 anos atrás

    ##  [ Guia da linguagem PHP ](https://www.treinaweb.com.br/blog/guia-da-linguagem-php) 

     Nesse guia de PHP você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação PHP. Acesse agora mesmo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/04195644/php-background-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Estrutura interna de valor, referências e gerenciamento de memória no PHP ](https://www.treinaweb.com.br/blog/estrutura-interna-de-valor-referencias-e-gerenciamento-de-memoria-no-php) 

     Valores em PHP possuem que semântica? De valor ou de referência? Objetos são passados por referência? Essas são algumas das questões que esse artigo se propõe a responder.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/09/object-calisthenics-em-php-parte-1-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     9 anos atrás

    ##  [ Object Calisthenics em PHP - Parte 1 ](https://www.treinaweb.com.br/blog/object-calisthenics-em-php-parte-1) 

     Neste artigo vamos aprender os dois primeiros conceitos sobre object calisthenics e como eles nos ajudam a ter um código melhor e mais conciso.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/relat-rio-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     10 anos atrás

    ##  [ Relatório de cobertura de testes (Code Coverage) com o PHPUnit ](https://www.treinaweb.com.br/blog/relatorio-de-cobertura-de-testes-code-coverage-com-o-phpunit) 

     O PHPUnit é um framework para a criação de testes unitários. Nesse artigo vamos falar sobre a geração de relatórios de cobertura de testes (Code Coverage).

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/09160454/SGBDs-400x280.png)  [ Bancos de Dados ](https://www.treinaweb.com.br/blog/categoria/bancos-de-dados) 

     5 anos atrás

    ##  [ Tipos de banco de dados NoSQL ](https://www.treinaweb.com.br/blog/tipos-de-banco-de-dados-nosql) 

     Veja neste artigo os principais tipos de banco de dados NoSQL.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/07/o-que-e-pdo-no-php-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     6 anos atrás

    ##  [ O que é PDO e quais vantagens de utilizar ele no PHP ](https://www.treinaweb.com.br/blog/o-que-e-pdo-no-php) 

     Aprenda o que é PDO e as vantagens de utilizá-lo na linguagem de programação PHP. Veremos também o que é o conceito de driver do PDO e como ativá-los.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **02h 46min 32s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
