sql >> Databáze >  >> Database Tools >> phpMyAdmin

Závažná chyba:Nezachyceno ArgumentCountError:Příliš málo argumentů pro funkci Admincategory::deletecategory(),

Někdy se stane, že AdminCategory::deletecategory($parentId) je volána bez parametru, ale prototyp pro něj nemá výchozí hodnotu, a proto je vyvolána výjimka. Vzhledem k tomu, že získáváte data z požadavku na příspěvek a vždy existuje možnost, že kategorie nemá rodiče, můžete svou metodu přefaktorovat tak, aby vypadala takto:

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
}

Pokud používáte tipy pro psaní, bylo by vhodnější, aby metoda vypadala jako

 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
 }

Pokud OPRAVDU očekáváte, že parentId MUSÍ být předáno, pak místo toho zabalte volající metodu pomocí try catch

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



  1. Wordpress a phpMyAdmin nemohou otevřít databázi RDS

  2. PhpMyAdmin automaticky obnovuje tabulku MySQL

  3. Jak vytvořit rozšíření pro SQL Server Management Studio 17 v C# ve VS2017?

  4. Problémy s migrací:MS SQL> MySQL:Vložení vyrovnávací paměti