PHP функции, связанные с ":" и "?", Что это делает? - PullRequest
0 голосов
/ 26 апреля 2018

Я обнаружил php-файл, внутри которого была функция, подобная приведенной ниже:

public function getCharset(): ?string
{
    return $this->charset;
}

Я хочу знать, что здесь делает :? String .

1 Ответ

0 голосов
/ 26 апреля 2018

Это известно как обнуляемый тип , и введено в PHP 7.1 :

Объявления типов для параметров и возвращаемых значений теперь могут быть помечены как обнуляемые, если перед именем типа ставить знак вопроса.Это означает, что наряду с указанным типом NULL может быть передан в качестве аргумента или возвращен как значение соответственно.

По сути, функция может возвращать либо указанный тип или null.Если он вернет другой тип, выдается ошибка:

function answer(): ?int  {
    return null; // ok
}

function answer(): ?int  {
    return 42; // ok
}

function answer(): ?int {
    return new stdclass(); // error
}
...