Как получить аргумент вызывающего метода внутри вызываемого метода в php?

Допустим, у меня есть такой класс:

<?php

class ExampleClass {

public function callerOne($arg1, $arg2) {
return $this->calledMethod(function($arg1, $arg2) {
// do something
});
}

public function callerTwo($arg1) {
return $this->calledMethod(function($arg1) {
// do something
});
}

protected function calledMethod(Closure $closure)
{
// How to access caller's arguments, like func_get_args()
$args = get_caller_method_args();
return call_user_func_array($closure, $args);
}

}

В приведенном выше примере, метод calledMethod завернуть пройденное закрытие во что-нибудь, например, деформировать это между beginTransaction() а также endTransaction(), но мне нужно получить доступ к аргументам метода вызывающего.

Я знаю, что возможное решение будет использовать use заявление при прохождении закрытия calledMethod(), но было бы намного легче на глаз, если бы то, что я хотел, возможно.

Как я могу получить доступ к аргументам вызывающего, внутри вызываемого метода? Это вообще возможно?

0

Решение

Я не уверен, поможет ли это в вашем случае, но вы можете создать ReflectionFunction и использовать ReflectionFunction :: аргументов вызова, который вызывает функцию и передает ее аргументы в виде массива.

<?php

$closure = function () {
echo 'Hello to: ' . implode(', ', func_get_args()) . PHP_EOL;
};

$reflection = new ReflectionFunction($closure);
// This will output: "Hello to: foo, bar, baz"$reflection->invokeArgs(array('foo', 'bar', 'baz'));
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector