Ответ 1
PHP 7.1 Теперь поддерживает типы возвращаемого значения nullable. Первый RFC, с которым я связан, - это тот, за который они пошли:
function nullOrString(int $foo) : ?string
{
return $foo%2 ? "odd" : null;
}
старый ответ:
Поскольку мой комментарий был фактически ответом на вопрос:
PHP 7 пока не поддерживает типы возвращаемых значений с нулевым значением, но RFC для решения именно этого, он нацелен на PHP 7.1. Если он пройдет, синтаксис затем повлияет на все типы-подсказки (оба типа возврата и типы-подсказки):
public function returnStringOrNull(?array $optionalArray) : ?string
{
if ($optionalArray) {
return implode(', ', $optionalArray);//string returned here
}
return null;
}
Там также конкурирующий RFC, чтобы добавить типы union, которые могли бы сделать то же самое, но выглядели бы иначе:
public function returnStringOrNull(array|null $optionalArray) : string|null
{
if ($optionalArray) {
return implode(', ', $optionalArray);//string returned here
}
return null;
}
На данный момент вам нужно будет написать:
public function returnStringOrNull( array $optionalArray = null)
{
if ($optionalArray) {
return implode(', ', $optionalArray);
}
}
Или просто верните пустую строку, чтобы она соответствовала типу возвращаемого значения, и проверьте значение фальшивости:
public function returnStringOrNull( array $optionalArray = null) : string
{
if ($optionalArray) {
return implode(', ', $optionalArray);
}
return '';
}
//call
$string = $x->returnStringOrNull();
if (!$string) {
$string = $x->returnStringOrNull(range(1, 10));
}