phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

Errore irreversibile:Uncaught ArgumentCountError:Troppo pochi argomenti per funzionare Admincategory::deletecategory(),

A volte capita che AdminCategory::deletecategory($parentId) venga chiamato senza un parametro ma il prototipo non abbia un valore predefinito per esso e quindi viene generata un'eccezione. Dal momento che ottieni dati da una richiesta di post e c'è sempre la possibilità che una categoria non abbia un genitore, puoi riorganizzare il tuo metodo in modo che assomigli a:

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
}

Se stai usando suggerimenti per la digitazione, sarebbe più appropriato rendere il metodo simile a

 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
 }

Se ti aspetti DAVVERO che parentId DEVE essere passato, allora avvolgi il chiamante del metodo con try catch

if (method_exists($object, $this->method)) {
    try {
        call_user_func_array([$object, $this->method], $this->params);
    } catch (\Exception $ex) {
        // HANDLE EXCEPTION HERE
    }
}