कभी-कभी ऐसा होता है कि AdminCategory::deletecategory($parentId) को बिना किसी पैरामीटर के कॉल किया जाता है, लेकिन प्रोटोटाइप का डिफ़ॉल्ट मान नहीं होता है और इसलिए अपवाद फेंक दिया जाता है। चूंकि आपको एक पोस्ट अनुरोध से डेटा मिलता है और इस बात की हमेशा संभावना होती है कि किसी श्रेणी में कोई अभिभावक नहीं है, आप इस तरह दिखने के लिए अपनी विधि को दोबारा कर सकते हैं:
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
}
यदि आप टाइपिंग संकेतों का उपयोग कर रहे हैं तो विधि को इस तरह दिखाना अधिक उपयुक्त होगा
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
}
यदि आप वास्तव में उम्मीद करते हैं कि parentId पास होना चाहिए तो इसके बजाय विधि कॉलर को पकड़ने के साथ लपेटें
if (method_exists($object, $this->method)) {
try {
call_user_func_array([$object, $this->method], $this->params);
} catch (\Exception $ex) {
// HANDLE EXCEPTION HERE
}
}