Может кто-нибудь объяснить, как работает call_user_func_array (array (arg1, arg2), [])?

Я знаю, что это действительно расплывчатый вопрос, но я просто не понимаю его. Я в основном парень по javascript / java, так что вы меня извините.

Что происходит внутри этого первого вызова массива при выполнении чего-то вроде:

call_user_func_array(array($this, $this->statementType), array($args))

что превращает его в функцию обратного вызова, которая является членом объекта $ this? Я понимаю, что это работает, я просто не до конца понимаю, почему, и это беспокоит меня.

0

Решение

В PHP вы можете определить callable как array это сочетание вызывающего контекста и имени функции.

Если вы используете [$this, $string] он вызовет функцию, имя которой хранится в $string на $this пример. ([$this, 'functionName'] тоже бы сработало, переменная не обязательно)

Если вы используете [$className, $string] это приведет к статическому вызову.
Примеры здесь могут быть ['\Namespace\MyClass', 'functionName'] или же [\NameSpace\MyClass::class, 'functionName'] или с переменными. ::class Синтаксис имеет ряд преимуществ, как уже было сказано Вот. Статический вызов также может быть выполнен одной строкой ("\Namespace\MyClass::functionName" например)

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

3

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

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