Terkadang AdminCategory::deletecategory($parentId) dipanggil tanpa parameter tetapi prototipe tidak memiliki nilai default untuk itu dan oleh karena itu pengecualian dilemparkan. Karena Anda mendapatkan data dari permintaan posting dan selalu ada kemungkinan bahwa suatu kategori tidak memiliki induk, Anda dapat memfaktorkan ulang metode Anda agar terlihat seperti:
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
}
Jika Anda menggunakan petunjuk pengetikan yang lebih tepat adalah membuat metode terlihat seperti
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
}
Jika Anda BENAR-BENAR mengharapkan parentId HARUS diteruskan, alih-alih bungkus pemanggil metode dengan try catch
if (method_exists($object, $this->method)) {
try {
call_user_func_array([$object, $this->method], $this->params);
} catch (\Exception $ex) {
// HANDLE EXCEPTION HERE
}
}