同一个接口一下正常一下报错,不知道啥原因
Optional parameter $data declared before required parameter $id is implicitly treated as a required parameter
controller代码
/**
* 更新數據
* @param Request $request
* @param $id
* @return Response
* @throws LxBusinessException
*/
public function update(Request $request, $id)
{
$data = $request->all();
$res = $this->service->update($data, $id);
if ($res){
return api_success('更新成功');
}
return api_fail('更新失败');
}
service代码
/**
* 更新信息
* @param array $data
* @param int $id
* @return mixed
* @throws LxBusinessException
*/
public function update(array $data = [], int $id)
{
if (empty($data) || !$id) {
throw new LxBusinessException(ApiResponseCode::HTTP_BAD_REQUEST);
}
$result = false;
DB::beginTransaction();
try {
$row = $this->model->findOrFail($id);
// 模型验证
if ($this->modelValidate) {
$validate = str_replace("\\model\\", "\\request\\", get_class($this->model));
if (class_exists($validate)) {
//如果开启场景验证
if ($this->modelSceneValidate) {
\validate($validate)->scene('edit')->check($data);
} else {
\validate($validate)->check($data);
}
}
}
$result = $row->fill($data)->save();
DB::commit();
} catch (Throwable $e) {
Db::rollBack();
throw new LxBusinessException($e->getMessage());
}
return $result;
}
"ErrorException: Optional parameter $data declared before required parameter $id is implicitly treated as a required parameter in D:\\webman_workspace\\lx_cms\\lx-cms-backend\\app\\common\\service\\BaseService.php:212\nStack trace:\n#0 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\composer\\ClassLoader.php(576): support\\App::{closure}()\n#1 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\composer\\ClassLoader.php(576): include()\n#2 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\composer\\ClassLoader.php(427): Composer\\Autoload\\{closure}()\n#3 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\app\\admin\\service\\SystemDeptService.php(8): Composer\\Autoload\\ClassLoader->loadClass()\n#4 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\composer\\ClassLoader.php(576): include('...')\n#5 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\composer\\ClassLoader.php(427): Composer\\Autoload\\{closure}()\n#6 [internal function]: Composer\\Autoload\\ClassLoader->loadClass()\n#7 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Source\\AttributeBasedAutowiring.php(38): class_exists()\n#8 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Source\\AttributeBasedAutowiring.php(63): DI\\Definition\\Source\\AttributeBasedAutowiring->autowire()\n#9 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Source\\SourceChain.php(37): DI\\Definition\\Source\\AttributeBasedAutowiring->getDefinition()\n#10 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Container.php(147): DI\\Definition\\Source\\SourceChain->getDefinition()\n#11 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Container.php(131): DI\\Container->getDefinition()\n#12 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Reference.php(44): DI\\Container->get()\n#13 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Resolver\\ResolverDispatcher.php(55): DI\\Definition\\Reference->resolve()\n#14 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Resolver\\ParameterResolver.php(73): DI\\Definition\\Resolver\\ResolverDispatcher->resolve()\n#15 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Resolver\\ObjectCreator.php(124): DI\\Definition\\Resolver\\ParameterResolver->resolveParameters()\n#16 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Resolver\\ObjectCreator.php(56): DI\\Definition\\Resolver\\ObjectCreator->createInstance()\n#17 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Definition\\Resolver\\ResolverDispatcher.php(60): DI\\Definition\\Resolver\\ObjectCreator->resolve()\n#18 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Container.php(353): DI\\Definition\\Resolver\\ResolverDispatcher->resolve()\n#19 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\php-di\\php-di\\src\\Container.php(184): DI\\Container->resolveDefinition()\n#20 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\webman-framework\\src\\App.php(316): DI\\Container->make()\n#21 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\webman-framework\\src\\App.php(351): Webman\\App::Webman\\{closure}()\n#22 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\app\\admin\\middleware\\LxAccessMiddleware.php(44): Webman\\App::Webman\\{closure}()\n#23 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\webman-framework\\src\\App.php(341): app\\admin\\middleware\\LxAccessMiddleware->process()\n#24 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\webman\\action-hook\\src\\ActionHook.php(15): Webman\\App::Webman\\{closure}()\n#25 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\webman-framework\\src\\App.php(341): Webman\\ActionHook\\ActionHook->process()\n#26 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\webman-framework\\src\\App.php(560): Webman\\App::Webman\\{closure}()\n#27 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\webman-framework\\src\\App.php(148): Webman\\App::findRoute()\n#28 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\workerman\\Connection\\TcpConnection.php(646): Webman\\App->onMessage()\n#29 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\workerman\\Events\\Select.php(311): Workerman\\Connection\\TcpConnection->baseRead()\n#30 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\workerman\\Worker.php(1485): Workerman\\Events\\Select->loop()\n#31 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\workerman\\Worker.php(1402): Workerman\\Worker::forkWorkersForWindows()\n#32 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\workerman\\Worker.php(560): Workerman\\Worker::forkWorkers()\n#33 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\vendor\\workerman\\webman-framework\\src\\support\\App.php(131): Workerman\\Worker::runAll()\n#34 D:\\webman_workspace\\lx_cms\\lx-cms-backend\\start.php(4): support\\App::run()\n#35 {main}
windows系统
"workerman/webman-framework": "^1.5.0",
提示不是写得很清楚么
在强制参数之前指定可选参数都被视为强制参数,即使是使用命名参数调用也是如此
大佬好 那我的代码哪里需要修正 麻烦告知下 非常感谢 小的愚昧 没有找到哪里出问题
array $data = [], int $id 换个位置就行了。可选参数必须放在必须参数的后面
非常感谢