php exit(); function warning in codacy

242 views Asked by At

while using Codacy to analyze my PHP code I found a number of errors caused by the exit(); function. here's one function,

public function saveCssForm(){

      $data = $_POST;
      if(!$data){
        // is a direct acess 
        $this->index();exit();
      }
      // update the data
      $this->csssettingmodel->updateCSS($data);
      // save the notifications 
      $this->notify_update($data['site_id'],$data['lang_key']);
      // set the success message
      $this->session->set_flashdata('edit_item', 'edited');
      // redirect to the view page 
      $baseUrl = $this->config->item('base_url');
      redirect($baseUrl.'index.php/cssSettings/view/'.$this->session->userdata("languageabbr"));
  }
 public function index()
      {
        // Denay Direct Access
          echo "<hr><h1><center>NO DIRECT ACCESS</h1> </center>";
          echo "<center>You are not permitted to access this page </center>";
      }

and the codacy result shows this... enter image description here

any alternatives or suggestions to avoid this would be helpful.

1

There are 1 answers

0
IMSoP On BEST ANSWER

Codacy is not displaying errors, in the sense of problems you need to fix; it is analysing the quality of your code, and suggesting that the exit appearing in this position is not a good practice, so you might want to fix it.

Firstly, application frameworks are often designed to have a single point of entry, process some logic, and then return a result to the entry point which will output and clean up. Exiting from different points in the code makes it harder to predict the flow, because whole sections of the code may look reachable but actually come after the program has exited.

Secondly, such code might be used for debugging, to interrupt the flow of execution at a particular point to display some intermediate data or simulate a particular failure. In this case, it appearing in the analysed code would suggest that you had left the debugging code in accidentally.