Poznajemy dalej strict types w obiektówce PHP. Tym razem – typy nullable oraz typy „unijne”. Do dzieła.

Typy nullable pozwalają nam zwracać wartość, która jest albo danego typu, albo jest nullem.

Nasza fejkowa klasa, która to zademonstruje:

<?php 
declare(strict_types=1);

session_start(); 

class Session {
    private function __construct(){}

    public static function get(string $key) : ?string {
        return isset($_SESSION[$key]) ? $_SESSION[$key] : null;
    }
}

var_dump(Session::get('sth')); //NULL

Ważne, aby funkcja zwróciła albo dany typ, albo null – nie może zwrócić „none”, nie może być „voidem”.

Nie tylko wartości zwracane mogą być „nullable”, także wartości przekazywane jako parametry:

public function returnStringOrNull(?array $optionalArray) : ?string
{
   //(...)
}

Typ „unijny” pozwala nam określić, jakiego typu może być argument, wybierając więcej niż jeden typ, ale bez wybierania całkowicie dowolnego (typ mixed):

class Helper {
    private function __construct(){}

    public static function redirectTo(string $path, int|float|string $response_code)
    {
    header("Location: {$path}");
    http_response_code((int)$response_code);
    exit;
    }
}

Helper::redirectTo("https://www.google.com", "302");