Desenvolvimento - PHP

Tipos de dados do PHP

Veja neste artigo quais são os tipos de dados disponíveis na linguagem PHP, como e quando utilizá-los. Antes da definição dos tipos, será feita ainda uma breve discussão sobre a declaração de variáveis na linguagem.

por Joel Rodrigues



Para os programadores que estão iniciando os estudos de alguma linguagem, um ponto de fundamental importância é o conhecimento dos tipos de dados existentes na tecnologia que se pretende utilizar. Muitas linguagens de alto nível possuem, por exemplo, vários tipos de dados para representar valores numéricos. A decisão de qual utilizar vai depender de fatores como a precisão necessária ou o valor máximo que é possível armazenar em uma variável.

Em linguagens fortemente tipadas, é necessário definir previamente o tipo da variável a ser utilizada e os valores a ela atribuídos devem estar de acordo com a tipagem. Ou seja, não se pode declarar uma variável do tipo INTEIRO e atribuir a ela um valor DECIMAL ou TEXTO.

Observação 1: com relação a atribuição de valores decimais a variáveis do tipo inteiro, muitas linguagens mantém apenas a parte inteira e descartam a parte decimal. Detalhes desse comportamento não é o foco deste artigo.

No PHP isso não é necessário. A linguagem é extremamente flexível, a ponto de não ser necessário definir o tipo da variável no momento da declaração e, além disso, é possível atribuir valores de tipos diferentes a uma mesma variável.

Apenas para exemplificar o que foi dito e demonstrar rapidamente como é feita a declaração de variáveis no PHP, temos na Listagem 1 uma variável chamada $teste que recebe valores de três tipos distintos.

Listagem 1: Declaração de variável e atribuição de valores não tipados

<?php
	$teste = "Fulano";
	$teste = 1;
	$teste = TRUE;
?>

O código acima pode ser executado sem nenhuma ressalva, enquanto que o mesmo não poderia ser feito em boa parte das linguagens mais comuns.

Observação 2: a sintaxe da linguagem não é o foco desta publicação, mas vale lembrar que as variáveis são definidas com um cifrão ($) seguido do nome da variável, como pode ser visto acima.

Tendo visto como é feita a definição de variáveis e atribuição de valores, podemos então partir para o tema que motivou a escrita deste artigo e que será, de fato, o foco desta publicação.

Tipos de dados do PHP

Apesar de não ser fortemente tipada, a linguagem dispõe de alguns tipos de dados que, na prática, só diferem uns dos outros no momento da manipulação.

Estes tipos são:

  • Booleano;
  • Numérico;
  • String;
  • Array;
  • Objeto;
  • Recurso;
  • Misto;
  • Callback;
  • NULL.

Tipo booleano

O tipo de dados booleano representa um valor lógico que pode ser VERDADEIRO ou FALSO, ou seja, esse tipo de variável não é utilizado para operações aritméticas, por exemplo, seus valores possíveis são apenas dois e são utilizados para verificação e atribuição de condições.

No PHP, os valores VERDADEIRO e FALSO são representados pelas palavras reservadas TRUE e FALSE, respectivamente. A seguir temos um exemplo de utilização desse tipo de dado. Primeiramente são atribuídos valores a duas variáveis e em seguida algumas condições são definidas com base nesses valores.

Listagem 2: Utilização básica do tipo booleano

<?php
	$dia = TRUE;
	$chuva = FALSE;

	if($dia == TRUE)
		echo "Está de dia.";
	else
		echo "Está de noite.";

	if($chuva == TRUE)
		echo "Está chovendo.";
	else
		echo "Não está chovendo.";
?>

Primeiramente são atribuídos os valores verdadeiro e falso a duas variáveis $dia e $chuva, respectivamente. Em seguida é verificado o valor destas variáveis e, dependendo dele, são exibidas mensagens.

Observação 3: por se estar verificando se o valor da variável é verdadeiro, o operador de igualdade e o valor TRUE são opcionais. Bastaria usar, por exemplo, if($dia) ou if($chuva) e automaticamente a verificação seria a mesma.

Devido à flexibilidade que já foi citada, é fazer a verificação de veracidade de uma variável a partir de outros valores que não TRUE e FALSE. Por exemplo, o valor 1 é considerado verdadeiro, enquanto o valor NULL é considerado falso. A seguir são listados os valores possíveis e suas avaliações.

  • Valores numéricos diferentes de 0 (zero) são considerados como TRUE, enquanto o zero é considerado FALSE.
  • Valores strings preenchidos são considerados TRUE, enquanto strings vazias (“”) e o texto “0” é tido como FALSE.
  • Arrays vazios ou objetos sem conteúdo são considerados como FALSE, já o inverso é logicamente TRUE.
  • O valor NULL é considerado FALSE.

A Listagem 3 mostra um exemplo desse tipo de atribuição à variáveis booleanas.

Listagem 3: Uso de variáveis booleanas com valores diversos

<?php
	$variavel = "TEXTO";
	if($variavel)
		echo "O valor da variável é verdadeiro.";
	else
		echo "O valor da variável é falso";
?>

Como é de se esperar, será exibida a mensagem “O valor da variável é verdadeiro”.

Tipo Numérico

Valores numéricos podem ser representados em várias notações na linguagem PHP. Na base decimal, octal, hexadecimal e, no caso da decimal, podem ainda ser escritos como notação científica.

Com esse tipo de dados, é possível realizar as mais diversas operações aritméticas, obtendo como resultado um valor também numérico (como é de se esperar).

Abaixo temos alguns valores atribuídos a variáveis do tipo numérico.

Listagem 4: Atribuição de valores a variáveis numéricas

<?php
	$a = 10; //decimal
	$b = -123; //octal
	$c = 0123; //hexadecimal
	$d = 0x1A; //ponto flutuante
	$e = 5e21; //notação científica
?>

É importante saber que o separador de casas decimais é o ponto, e não a vírgula como costumamos usar no Brasil, esta não é utilizada na atribuição de valores numéricos.

Tipo String

Esse tipo representa uma cadeia de caracteres alfanuméricos (letras, números e caracteres especiais), ou seja, é usado para manipular textos. Para se atribuir valores a uma variável String, utilizam-se aspas simples ou duplas, como pode ser visto a seguir.

Listagem 5: Exemplo de uso de string

<?php
	$nome = "Joel Rodrigues";
	echo $nome;

	$site = 'Linha de Código';
	echo $site;
?>

Observação 4: apesar de ambas as formas serem igualmente permitidas (aspas simples ou duplas), aconselha-se utilizar, por ser uma boa prática, apenas um tipo de atribuição.

O PHP fornece várias funções nativas para manipular strings. Tais funções são explicadas nesse artigo: http://www.linhadecodigo.com.br/artigo/3522/funcoes-de-manipulacao-de-strings-no-php.aspx.

Tipo Array

Arrays ou vetores, como são conhecidos no português, são listas de valores que podem armazenar em sua estrutura, dados de diversos tipos.

Na maioria das linguagens, um array só pode conter elementos de um mesmo tipo de dados e sua capacidade deve ser definida antes de se começar a adicionar valores à lista. Por exemplo, sugiro uma breve leitura deste artigo que trata não somente dos arrays na linguagem C#, mas também apresenta a teoria de funcionamento dessas estruturas que, em geral, são bem parecidas nas várias linguagens.

Trabalhar com arrays envolve uma série de métodos, rotinas e técnicas que, por si só, poderiam ser tema de um artigo (como visto no link citado). Nesse artigo, veremos apenas exemplos simples de declaração e atribuição de valores a arrays.

Pode-se declarar e inicializar um array ao mesmo tempo, utilizando a palavra chave “array” seguida dos valores entre parênteses e separados por vírgula, como vemos na Listagem 5.

O acesso a cada elemento do array, por sua vez, se dá através do uso de colchetes contendo o índice do elemento (posição na lista, começando em zero).

Listagem 6: Exemplo de declaração e inicialização de array juntas

<?php
	$paises = array("Brasil", "EUA", "Italia", "Portugal");
	echo $paises[0];
?>

No código acima criamos um array chamado $paises contendo quatro elementos do tipo String. Em seguida, exibimos o valor do primeiro elemento do array (Brasil).

Outra forma de adicionar elementos é atribuindo valores a cada posição individualmente. Para isso, utiliza-se a mesma sintaxe de acesso anteriormente citada. No código abaixo temos um array $linguagens ao qual e adicionamos quatro elementos e, em seguida, exibimos o valor do quarto elemento (Ruby).

Listagem 7: Adição de elementos ao array individualmente

<?php
	$linguagens[0] = "PHP";
	$linguagens[1] = "C Sharp";
	$linguagens[2] = "Delphi";
	$linguagens[3] = "Ruby";
	echo $linguagens[3];
?>

Tipo Objeto

Objetos são elementos fundamentais da Programação Orientada a Objetos e podem ser definidas como “entidades que possuem certo comportamento definido por seus métodos e propriedades”. De fato, para quem está iniciando os estudos sobre programação, estes termos podem ser confusos. Como não é objetivo desse artigo apresentar e discutir detalhadamente os elementos e conceitos da Orientação a Objetos, veremos apenas um exemplo básico de uso de um objeto.

Para entender o funcionamento do código a seguir, basta ter em mente uma definição básica de Classe. Então, Classe pode ser definida, a grosso modo, como “um tipo de dado criado pelo usuário(programador) e que possui, em sua estrutura, atributos (variáveis) e métodos que definem seu funcionamento”.

Na listagem a seguir, por exemplo, criamos uma classe chamada Livro que possui as propriedades (atributos) Titulo e Autor. Criamos um objeto do tipo Livro e definimos o valor de seus atributos.

Listagem 8: Exemplo básico de uso de um objeto

<?php
	class Livro
	{
		var $Titulo;
		var $Autor;
	}

	$exemplar = new Livro();	
	$exemplar->Titulo = "O Diário de um Mago";
	$exemplar->Autor = "Paulo Coelho";
?>

Tipo Recurso

O recurso ou resource, em inglês, é um tipo especial de variável utilizado para armazenar referências a recursos externos ao PHP, tais como uma imagem, arquivos abertos ou conexões com bancos de dados.

Esse tipo de dado é, em geral, criado por funções especiais como a mysql_connect, que inicia uma conexão com um banco de dados MySql, guardando uma referência à mesma que pode ser posteriormente utilizada.

Como foi dito, esse tipo de dado é utilizado por funções especiais e com fins específicos, assim, não é interessante ou necessário, neste ponto, mostrar exemplos práticos de uso. Ficamos então com a definição conceitual.

Tipo Misto

Como o próprio nome sugere, o tipo misto (mixed, em inglês) indica que uma variável pode receber valores de vários tipos. Um dos exemplos mais comuns disso é o método gettype que recebe um parâmetro do tipo mixed e retorna seu tipo, que pode ser qualquer um tipo do PHP.

Tipo Callback

O tipo callback pode ser entendido como uma referência a uma função. Algumas funções recebem como parâmetro uma “função de callback”, ou seja, uma função que deve ser executada quando o processamento da primeira for concluído. Um dos exemplos mais comuns é a função call_user_func que recebe como parâmetro uma referência a uma outra função a ser executada.

No código abaixo vemos um exemplo básico de uso.

Listagem 9: Exemplo de uso de call-back

<?php
	function ExibirMensagem()
	{
		echo "Seja bem vindo.";
	}

	call_user_func("ExibirMensagem");
?>

Temos a função ExibirMensagem que é chamada a partir de outra, a call_user_func. A call_user_func também pode ser usada para invocar métodos de uma classe ou objeto específicos, para tais detalhes, sugiro ler a documentação oficial.

Tipo NULL

O valor null é muito utilizado em várias linguagens para indicar que uma variável não possui valor. Quando atribuímos 0(zero) a um número ou “” (string vazio) a uma string, apesar de parecer que estas variáveis não possuem valores, isto não é verdade, pois mesmo estes são armazenados na memória. O único valor possível para o tipo NULL é o próprio NULL.

Conclusão

Como foi visto, a manipulação de variáveis no PHP não difere muito entre os tipos, o que torna essa linguagem uma das mais práticas para se trabalhar e mais fáceis de se aprender.

Finalizo aqui este artigo e espero que este conteúdo possa ser útil no auxílio aos programadores, principalmente aqueles que estão iniciando na linguagem.

Até a próxima.

Confira o curso de programação e boas práticas com PHP da Devmedia.

Joel Rodrigues

Joel Rodrigues - Técnico em Informática - IFRN Cursando Bacharelado em Ciências e Tecnologia - UFRN Programador .NET/C# e Delphi há quase 3 anos, já tendo trabalhado com Webservices, WPF, Windows Phone 7 e ASP.NET, possui ainda conhecimentos em HTML, CSS e Javascript (JQuery).