Если подпись метода имеет коллекцию Map в качестве значения по умолчанию для параметра, при использовании ReflectionClass возникает ошибка, чтобы проверить этот метод.Hack (PHP) ReflectionClass терпит неудачу с Map как свойство по умолчанию метода
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
вернет свойства для метода, как и для любого другого значения/типа.
Интересно. Какой у Вас вопрос? –
Мне интересно, не хватает ли я чего-то, чтобы эта работа работала должным образом. Любое другое значение/тип и проверка возвращают мне соответствующие свойства и т. Д. Я бы ожидал такого же поведения с коллекциями. – kyleferg