Đôi khi nó xảy ra rằng AdminCategory ::deletecategory ($ parentId) được gọi mà không có tham số nhưng nguyên mẫu không có giá trị mặc định cho nó và do đó ngoại lệ được ném ra. Vì bạn nhận được dữ liệu từ một yêu cầu bài đăng và luôn có khả năng một danh mục không có cấp độ gốc, bạn có thể cấu trúc lại phương thức của mình để trông giống như sau:
function deletecategory($parentId = null)
{
$ids = $_POST['id'];
$this->model->deletecategory($ids);
if (null !== $parentId) {
header('location:'.URL.'admincategory/showchildren/'.$parentId);
}
// PUT MORE OF YOUR LOGIC HERE, I DO NOT KNOW WHAT SHOULD HAPPEN
}
Nếu bạn đang sử dụng cách nhập, gợi ý thích hợp hơn sẽ là làm cho phương pháp trông giống như
function deletecategory(string $parentId = ''): void //void is for php7.1
{
$ids = $_POST['id'];
$this->model->deletecategory($ids);
if ('' !== $parentId) {
header('location:'.URL.'admincategory/showchildren/'.$parentId);
}
// AGAIN LOGIC HERE
}
Nếu bạn THỰC SỰ mong đợi rằng parentId PHẢI được chuyển thì thay vào đó hãy bọc trình gọi phương thức bằng try catch
if (method_exists($object, $this->method)) {
try {
call_user_func_array([$object, $this->method], $this->params);
} catch (\Exception $ex) {
// HANDLE EXCEPTION HERE
}
}