我的一位同事编写了这段代码,为图表构建了一个数组:
$results = array_build(range($days - 1, 0), function ($k, $v) use ($dateFormat) {
return [Carbon::today()->subDays($v)->format($dateFormat), [
'0' => 0,
'1' => 0
]];
});
我刚从Laravel 5.2升级到5.3,现在得到以下异常:
调用未定义的函数App \ Repositories \ array_build()
我不确定他的代码是如何工作的(因此我没有找到array_build方法),因此无法恢复工作。
答案 0 :(得分:1)
array_build()
was dropped in version 5.3,这就是您迁移后无法立即使用的原因。
array_build()帮助程序也从框架中删除,因为它不再在核心的任何地方使用。
您可以获得from the source函数:
<?php
function array_build($array, Closure $callback)
{
$results = array();
foreach ($array as $key => $value)
{
list($innerKey, $innerValue) = call_user_func($callback, $key, $value);
$results[$innerKey] = $innerValue;
}
return $results;
}
注意:来源是非正式的,没有提及在official migration doc 中删除该功能
答案 1 :(得分:0)
这是一种辅助方法。 尝试运行
composer dumpautoload
如果没有解决,你可以尝试看看composer.json是否包含自动加载的helper方法的文件,如下所示。辅助文件应包含方法array_build。该文件的名称可能不是helpers.php
"files":["app/helpers.php"].
正如@ishegg所说,它已被删除。所以如果你想让你的代码在这里工作是一种方法。
在项目根目录或某个地方
创建这样的文件<强> helpers.php 强>
<?php
if ( ! function_exists('array_build'))
{
/**
* Build a new array using a callback.
*
* @param array $array
* @param \Closure $callback
* @return array
*/
function array_build($array, Closure $callback)
{
$results = array();
foreach ($array as $key => $value)
{
list($innerKey, $innerValue) = call_user_func($callback, $key, $value);
$results[$innerKey] = $innerValue;
}
return $results;
}
}
并在 composer.json 中自动加载这样的文件
"autoload": {
"psr-4": {
.....
},
"files": [
"helpers.php"
]
},
运行
composer dumpautoload