0

我知道这是一个非常模糊的问题,但我只是不直观地理解它。我主要是一个 javascript/java 人,所以你不得不原谅我。

执行以下操作时,第一个数组调用内部会发生什么:

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

把它变成一个回调函数,它是 $this 对象的成员?我知道它有效,我只是不完全明白为什么而且它让我烦恼。

4

1 回答 1

3

在 PHP 中,您可以将 a 定义callablearray调用上下文和函数名的组合。

如果您使用[$this, $string]它将调用名称存储在实例中的$string函数$this。([$this, 'functionName']也可以,它不需要是一个变量)

如果使用[$className, $string]它将导致静态调用。这里的例子可以是['\Namespace\MyClass', 'functionName']or[\NameSpace\MyClass::class, 'functionName']或 with 变量。::class语法有许多优点,正如这里已经回答的那样。静态调用也可以通过单个字符串来完成("\Namespace\MyClass::functionName"例如)

第二个数组,正如函数所记录的那样,是调用函数时要传递给函数的参数列表,但我认为这部分已经很清楚了。

于 2018-06-27T19:58:16.953 回答