PHP 7.1 Теперь поддерживает возвращаемые значения nullable . Первый RFC, с которым я связан, - это тот, за которым они пошли:
function nullOrString(int $foo) : ?string
{
return $foo%2 ? "odd" : null;
}
Поскольку мой комментарий был фактически ответом на вопрос:
PHP 7 пока не поддерживает типы возвращаемых значений nullable, но есть RFC для решения именно этого, он стремится приземлиться в PHP 7.1. Если он пройдет, синтаксис будет влиять на все типы-подсказки (оба типа возврата и типы-подсказки):
public function returnStringOrNull(?array $optionalArray) : ?string
{
if ($optionalArray) {
return implode(', ', $optionalArray);//string returned here
}
return null;
}
Также есть конкурирующий RFC , чтобы добавить типы объединения, который мог бы сделать то же самое, но выглядел бы иначе:
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));
}
В настоящее время я сделал это таким образом, не уверен, есть ли лучшее решение:
source: function(request, response) {
var filteredArray = $.map(orignalArray, function(item) {
if( item.value.startsWith(request.term)){
return item;
}
else{
return null;
}
});
response(filteredArray);
},
Этот подход также позволил установить ограничение (например, 10 элементов) на количество предметы для показа.