As declarações de tipos em PHP fornecem asserções de tipos em tempo de execução para argumentos de funções, valores devolvidos e propriedades de classe.
Nas funções, pode acrescentar-se um tipo devolvido void para indicar que a função não devolve nenhum valor.
Os tipos declarados também servem como asserções em tempo de execução de que as funções devolvem uma resposta com um tipo razoável.
<?php
class Driver
{
private int $serial_number;
public function setSerialNumber(int $number): void
{
$this->serial_number = $number;
}
public function getSerialNumber(): int
{
return $this->serial_number;
}
}
$driver = new Driver();
$driver->setSerialNumber("Version 1b"); // This will throw a TypeError
Se um argumento de uma função, um valor devolvido ou uma propriedade de classe puder ser de mais do que um tipo, pode declarar-se uma união de tipos.
<?php
class IdentityCard
{
private int|null $id = null;
public function assign(int|float $id): void
{
$this->id = intval($id);
}
}
$card = new IdentityCard();
$card->assign(5.0);
Ao trabalhar com código, pode não ser possível especificar um tipo.
A partir do PHP 8.0, é disponibilizado um tipo de escape chamado mixed.
Mixed é equivalente a uma união de tipos de object|resource|array|string|float|int|bool|null.
Já trabalhas no escritório da cidade há algum tempo e tens vindo a desenvolver um conjunto de ferramentas que aceleram o teu trabalho do dia a dia, por exemplo a preencher formulários.
Agora, um novo colega vai juntar-se a ti e apercebeste-te de que as tuas ferramentas podem não ser autoexplicativas. Há muitas convenções estranhas no teu escritório, como preencher sempre os formulários com letras maiúsculas e evitar deixar campos vazios.
Como primeiro passo, decides adicionar declarações de tipo do PHP para que seja mais fácil para o teu novo colega começar a usar as tuas ferramentas de imediato.
Adiciona declarações de tipo das propriedades a cada uma das propriedades declaradas da classe Address.
Cada propriedade da classe deve ser declarada como string.
Adiciona uma declaração de tipo de parâmetro e uma declaração de tipo devolvido ao método blanks da classe Form.
O método deve receber um comprimento inteiro e devolver uma representação da linha em branco sob a forma de string.
Adiciona uma declaração de tipo de parâmetro e uma declaração de tipo devolvido ao método letters da classe Form.
O método deve receber uma string, que representa palavras, e devolver um array de letras.
Adiciona declarações de tipo de parâmetro e uma declaração de tipo devolvido ao método checkLength da classe Form.
O método deve receber uma palavra em string e um comprimento máximo inteiro, e devolver um valor verdadeiro ou falso.
Adiciona uma declaração de tipo de parâmetro, recorrendo à classe Address atualizada anteriormente, e uma declaração de tipo devolvido ao método formatAddress da classe Form.
O método deve receber um Address e devolver uma string formatada.
Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.