Skip to content

Невозможно передать приватному методу аргумент в виде ссылки, а не значения #16

@legale

Description

@legale

Привет. Отличная библиотека. Столкнулся с такой проблемой. Пытаюсь тестировать приватный метод, который принимает 1 аргумент в виде ссылки.

    private function bit_set(int &$bitmap, int $bit)
    {
        $bitmap |= 1 << $bit - 1;
        return $bitmap;
    }

Не заработало в связи с тем, что функция ждет ссылку, а получает от ReflectionMethod() значение.
Добавил в метод __call()
array_walk($args, function($el){$el = &$el;} ); //switch function arguments from value to reference

Получилось так:

public function __call($methodName, array $args)
{
$method = new ReflectionMethod($this->class, $methodName);
if (!$method->isPublic()) {
$method->setAccessible(true);
}
array_walk($args, function($el){$el = &$el;} ); //switch function arguments from value to reference

return $method->isStatic()
? $method->invokeArgs(null, $args)
: $method->invokeArgs($this->object, $args );
}

Такие дела.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions