Percursos
/
PHP
PHP
/
Exercícios
/
Gabinete municipal
Gabinete municipal

Gabinete municipal

Exercício de aprendizagem

Introdução

Declaração de tipos

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

Uniões de tipos

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);

Tipos mistos

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.

Instruções

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.

1. Declara os tipos da classe Address

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.

2. Declara os tipos para preencher o formulário com valores em branco

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.

3. Declara o tipo ao dividir um valor em letras separadas

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.

4. Declara o tipo ao verificar se um valor cabe num formulário

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.

5. Declara o tipo ao formatar um endereço no formulário

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.

Editar via GitHub A ligação abre numa nova janela ou separador
PHP Exercism

Estás pronto para começar Gabinete municipal?

Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.