Como definir o tipo de dado no PHP
Vamos entender como o PHP trabalha com tipo de dados, variáveis, propriedades (campos/atributos), funções/métodos e parâmetros.

(Imagem Pixabay)
Para ver o tipo de retorno é só usar gettype($variavel).
Procedural
$variavel = 2;
Retornará Inteiro
$variavel = (string) 2;
Será retornado string, pois ao usar o tipo de dado na frente você converte o valor.
$variavel = (string) 2;
$variavel = (int) 2;
No procedural, a mesma variável pode ter seu tipo de dados alterado.
function mensagem($valor) {}
O parâmetro $valor pode ser qualquer tipo, também poderiamos especificar com mixed antes do valor, o retorno também será de qualquer tipo.
function mensagem(mixed $valor):mixed {}
Esse mixed pode ser adicionado ou não, fica opcional, já que pode ser qualquer tipo.
Agora quando queremos específicar, vamos supor que tenho um parâmetro $valor que é do tipo inteiro e esse valor sempre deverá ser do tipo inteiro, além disso seu retorno deve ser sempre do tipo string, convertendo o inteiro para string. Vou mostrar um exemplo completo abaixo.
function mensagem(int $valor):string {
return $valor;
}
Essa função sempre terá um parâmetro do tipo inteiro, assim como seu retorno sempre será string.
Orientação a Objetos
Já no paradigma orientado a objetos a forma de trabalhar com tipo de dados muda em relação a variáveis, que no caso chamamos de propriedades, você também pode chamar de campos ou atributos.
class exemplo {
public $valor = 2;
}
$e = new exemplo();
$e->valor = (string) 2;
Se tentarmos alterar o tipo de valor definido em uma propriedade, o valor retornará como do tipo string, pois não específicamos anteriormente qual o tipo que essa propriedade possui.
class exemplo {
public int $valor = 2;
}
$e = new exemplo();
$e->valor = (string) 2;
Agora nesse caso que específicamos o tipo da propriedade, o tipo de dado não pode ser alterado, por isso ao específicar string, o tipo de dado continuará sendo inteiro.
Se você tentar forçar um valor do tipo string, será exibido um erro do tipo: PHP Fatal error: Uncaught TypeError: Cannot assign string to property Exemplo::$valor of type int
Para os métodos segue o mesmo estilo do procedural, com excessão que podemos informar os modificadores de acesso.
class exemplo {
public int $valor = 2;
public function mensagem(int $valor):string {
return gettype($valor) . $valor;
}
}
$e = new exemplo();
$e->valor = (string) 2;
echo $e->mensagem((string) 2);
Nesse exemplo tentei forçar a alteração do valor no parâmetro, o resultado continuará sendo inteiro, pois foi declarado assim, o tipo de retorno continuará a ser string também.
Ou seja, assim como em outras linguagens de programação, o PHP também pode permitir ou não a alteração do tipo de dado.
Gostou desse artigo? Compartilhe para que mais programadores aprendam e descubram a forma correta de se trabalhar com PHP.