我有一个方法remove()
,它有参数$ item,但它没有被使用。 PhpStorm已经变灰了,并说参数$ item没有在任何地方使用。但如果我删除它,我会收到此错误:
ErrorException in Cart.php line 51:
Illegal offset type
in Cart.php line 51
at HandleExceptions->handleError('2', 'Illegal offset type', 'C:\wamp64\www\laravel\app\Cart.php', '51', array('id' => object(Product))) in Cart.php line 51
at Cart->remove(object(Product), '1') in ProductController.php line 65
at ProductController->removeFromCart('1')
at call_user_func_array(array(object(ProductController), 'removeFromCart'), array('id' => '1')) in compiled.php line 9399
at Controller->callAction('removeFromCart', array('id' => '1')) in compiled.php line 9426
at ControllerDispatcher->dispatch(object(Route), object(ProductController), 'removeFromCart') in compiled.php line 8484
at Route->runController() in compiled.php line 8465
at Route->run(object(Request)) in compiled.php line 8174
Cart.php:
/**
* Remove an item from cart
*
* @param $item
* @param $id
*/
public function remove($item, $id)
{
$this->totalQty -= $this->items[$id]['qty']; // Line 51
$this->totalPrice -= $this->items[$id]['price'] * $this->items[$id]['qty'];
unset($this->items[$id]);
}
如果我把它留在那里工作正常,但是当我删除它时它为什么没有?
答案 0 :(得分:1)
更新方法签名时,必须更新被调用方法的每个实例以反映新参数。在第65行的ProductController中,它仍然使用旧方法签名(包含item和id)。要修复它,请更新控制器中的方法调用以使用$ id。