Я обнаружил php-файл, внутри которого была функция, подобная приведенной ниже:
public function getCharset(): ?string { return $this->charset; }
Я хочу знать, что здесь делает :? String .
Это известно как обнуляемый тип , и введено в PHP 7.1 :
Объявления типов для параметров и возвращаемых значений теперь могут быть помечены как обнуляемые, если перед именем типа ставить знак вопроса.Это означает, что наряду с указанным типом NULL может быть передан в качестве аргумента или возвращен как значение соответственно.
NULL
По сути, функция может возвращать либо указанный тип или null.Если он вернет другой тип, выдается ошибка:
null
function answer(): ?int { return null; // ok } function answer(): ?int { return 42; // ok } function answer(): ?int { return new stdclass(); // error }