2015-05-26 2 views
1

Если подпись метода имеет коллекцию 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 вернет свойства для метода, как и для любого другого значения/типа.

+0

Интересно. Какой у Вас вопрос? –

+0

Мне интересно, не хватает ли я чего-то, чтобы эта работа работала должным образом. Любое другое значение/тип и проверка возвращают мне соответствующие свойства и т. Д. Я бы ожидал такого же поведения с коллекциями. – kyleferg

ответ