Я знаю, что это действительно расплывчатый вопрос, но я просто не понимаю его. Я в основном парень по javascript / java, так что вы меня извините.
Что происходит внутри этого первого вызова массива при выполнении чего-то вроде:
call_user_func_array(array($this, $this->statementType), array($args))
что превращает его в функцию обратного вызова, которая является членом объекта $ this? Я понимаю, что это работает, я просто не до конца понимаю, почему, и это беспокоит меня.
В PHP вы можете определить callable
как array
это сочетание вызывающего контекста и имени функции.
Если вы используете [$this, $string]
он вызовет функцию, имя которой хранится в $string
на $this
пример. ([$this, 'functionName']
тоже бы сработало, переменная не обязательно)
Если вы используете [$className, $string]
это приведет к статическому вызову.
Примеры здесь могут быть ['\Namespace\MyClass', 'functionName']
или же [\NameSpace\MyClass::class, 'functionName']
или с переменными. ::class
Синтаксис имеет ряд преимуществ, как уже было сказано Вот. Статический вызов также может быть выполнен одной строкой ("\Namespace\MyClass::functionName"
например)
Второй массив, поскольку функция документирует это, список параметров, передаваемых функции при ее вызове, но я предполагаю, что эта часть уже ясна.
Других решений пока нет …