學習軌道
/
PHP
PHP
/
練習
/
市政辦公室
市政辦公室

市政辦公室

學習練習

簡介

型別宣告

PHP 的型別宣告會在執行階段為函式引數、回傳值和類別屬性提供型別斷言。 在函式上,可以加上void回傳型別,表示這個函式不會回傳任何值。 宣告的型別同時也作為執行階段的斷言,確保函式回傳的結果具有合理的型別。

<?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

聯合型別

如果函式引數、回傳值或類別屬性的型別可以超過一種,就可以宣告聯合型別。

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

混合型別

在撰寫程式碼時,我們有時無法明確指定型別。 從 PHP 8.0 開始,提供了一個名為mixed的逃生型別。 mixed等同於object|resource|array|string|float|int|bool|null的聯合型別。

說明

你在市政府辦公室工作了一段時間,也開發出一套能加快日常工作的工具,例如填寫表單。

現在,有位新同事要加入你的行列,而你發現自己的工具可能不是那麼一看就懂。 你們辦公室裡有很多奇怪的規矩,例如表單一律用大寫字母填寫,而且不能留下空白欄位。

第一步,你決定加上 PHP 型別宣告,讓新同事能更快上手,開始使用你的工具。

1. 宣告 Address 類別的型別

為 Address類別中已宣告的每個屬性加上屬性型別宣告。 每個類別屬性都應該宣告為字串。

2. 宣告用空白值填寫表單所需的型別

為 Form類別中的 blanks方法加上參數型別宣告和回傳型別宣告。 這個方法會接受一個整數長度,並回傳代表空白列的字串。

3. 在把值拆成個別字母時宣告型別

為 Form類別中的 letters方法加上參數型別宣告和回傳型別宣告。 這個方法會接受一個代表詞語的字串,並回傳由字母組成的陣列。

4. 在檢查值能否放入表單時宣告型別

為 Form類別中的 checkLength方法加上參數型別宣告和回傳型別宣告。 這個方法會接受一個字串詞語和一個整數最大長度,並回傳 true 或 false 的值。

5. 在格式化表單中的地址時宣告型別

為 Form類別中的 formatAddress方法加上參數型別宣告(使用先前更新過的 Address類別)以及回傳型別宣告。 這個方法會接受一個 Address,並回傳格式化後的字串。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
PHP Exercism

準備好開始 市政辦公室 了嗎?

註冊 Exercism,透過 11 個概念122 個練習 和真人引導來學習並精通 PHP,全部免費。