в 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 и я ничего не могу сделать?
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
}
}
Других решений пока нет …