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