gpt4 book ai didi

php - 传递给函数的参数必须是可调用的,数组给定

转载 作者:IT王子 更新时间:2023-10-29 00:16:43 25 4
gpt4 key购买 nike

我正在尝试对集合中的每个元素运行一个方法。它是驻留在同一个类中的对象方法:

protected function doSomething()
{
$discoveries = $this->findSomething();
$discoveries->each([$this, 'doSomethingElse']);
}

protected function doSomethingElse($element)
{
$element->bar();
// And some more
}

如果我在调用 Collection::each 之前检查 is_callable([$this, 'doSomethingElse']) 它返回 true,所以显然它是可调用的.然而,调用本身会引发异常:

Type error: Argument 1 passed to Illuminate\Support\Collection::each() must be callable, array given, called in ---.php on line 46

可以找到尝试调用的方法here .

我通过传递一个本身简单地调用该函数的闭包来绕过这个问题,但这绝对是一个更简洁的解决方案,我无法找出它抛出错误的原因。

最佳答案

将回调方法的可见性更改为公开。

protected function doSomething()
{
$discoveries = $this->findSomething();
$discoveries->each([$this, 'doSomethingElse']);
}

public function doSomethingElse($element)
{
$element->bar();
// And some more
}

关于php - 传递给函数的参数必须是可调用的,数组给定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43170785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com