Если подпись метода имеет коллекцию Map в качестве значения параметра по умолчанию, выдается ошибка при использовании ReflectionClass для проверки этого метода.
Cannot use collection initialization in non-collection class
Класс выглядит так:
<?hh //strict
namespace Acme;
class Foo
{
protected Map<string, string> $options;
public function __construct(Map<string, string> $options = Map{})
{
$this->options = $options;
}
}
И ошибка отражения происходит, когда
$reflection = new ReflectionClass('Acme\Foo');
$reflection->getConstructor()->getParameters();
Класс создается правильно при его использовании. Я могу создать ошибку только с помощью Reflection.
Вопрос
Есть ли что-то, что я делаю неправильно, или концепция, которую я упускаю, чтобы сделать эту работу, как ожидалось? Я бы ожидал getProperties
вернуть свойства для метода, как это происходит с любым другим значением / типом.
Это похоже на ошибку. пожалуйста зарегистрируйте его на нашем трекере GitHub.
Других решений пока нет …