PHP типирование и нулевые значения

в Java есть функциональность, которая позволяет мне передавать нулевые значения методам в параметрах, а также возвращать нулевые значения:

class Test {
public List<String> method (String string) {
return null;
}

public void otherMethod () {
this.method(null);
}
}

Однако в PHP следующее не работает:

<?php

class SomeClass {

}

class Test {
public function method (): SomeClass
{
return null;
}
}

$test = new Test();

$test->method();

Я не могу передать нулевые значения типизированным методам:

class Test {
public function method (SomeClass $obj)
{
// I can't pass null to this function either
}
}

Я нахожу это очень раздражающим, я что-то упускаю? Или это просто как работает в PHP и я ничего не могу сделать?

1

Решение

php7.1 позволяет обнуляемые типы, ставя префикс перед знаком вопроса ?, Вы можете передавать обнуляемые параметры или определять функции, возвращающие обнуляемые типы.

Документация здесь.

Ваш пример:

<?php
class SomeClass {
}
class Test {
public function method (): ?SomeClass
{
return null;
} }
$test = new Test();
$test->method();

или же

class Test {
public function method (?SomeClass $obj)
{
// pass null or a SomeClass object
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector