back to top

Risolvere PHP Fatal error: Cannot redeclare function

Come è noto, in PHP effettuare la dichiarazione di una funzione associandola ad un nome di funzione già esistente ha come esito una notifica di errore sul modello della seguente:

Fatal error: Cannot redeclare function...

Questo perché il linguaggio non permette (giustamente) la dichiarazione di due funzioni omonime in uno stesso file; ugualmente, non sarà possibile chiamare una funzione definita dall’utente nello stesso modo di una nativa messa a disposizione da PHP stesso.

Quando si verifica l’errore e come risolverlo

I casi più comuni in cui si verifica questo errore sono i seguenti:

  • all’interno dello stesso file sono presenti due o più funzioni con lo stesso nome: in tal caso basterà fare una ricerca per risolvere il problema.
  • lo script che genera l’errore include altri file, pertanto è probabile che in una delle inclusioni sia presente una funzione omonima: in tal caso controllare ogni file incluso nello script al fine di cercare la funzione con il medesimo nome.
  • lo script include lo stesso file più di una volta: in tal caso può essere utile utilizzare funzioni come include_once() e require_once() al posto dei classici include() e require().
  • è stata creata una funzione con un nome già utilizzato da una funzione nativa del PHP: in tal caso una ricerca su Google potrebbe chiarirci le idee circa la presenza di funzioni PHP aventi lo stesso nome della nostra funzione personalizzata.

Lavorare su applicativi complessi

Quando si deve lavorare su un’applicazione particolarmente complessa, per esempio per l’aggiunta di un modulo, non sempre si ha la possibilità di conoscere a priori tutte la funzioni già dichiarate, è quindi frequente che un codice come il seguente:

function nome_funzione() {
  // ...
}

produca l’errore di cui parlavamo all’inizio del post. Per evitare questo, possiamo però utilizzare una funzione di controllo, denominata function_exists(), che potrà essere utilizzata in questo modo:

if(!function_exists('nome_funzione')) {
  function nome_funzione() {
    // ...
  }
}

In questo modo sarà possibile verificare l’inesistenza di una funzione e, solo se questa condizione dovesse essere verificata, renderne effettiva la dichiarazione.

Questa tecnica è molto utilizzata, ad esempio, nello sviluppo di plugin di WordPress o altri CMS in cui non è possibile conoscere a priori il codice di ciascun plugin che potrebbe essere installato dagli utenti (con conseguente aggravamento del rischio di duplicare nomi di funzioni che potrebbero portare al Fatal error).

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Cannot modify header information – headers already sent: come risolvere l’errore PHP

L'errore di PHP cannot modify header information - headers...

Ricavare l’estensione di un file con PHP

Quando si lavora con i file in un'applicazione web,...

GD Library: creazione, manipolazione e ridimensionamento immagini con PHP

Le librerie GD (o GD Library), sono componenti fondamentali...

PHP: impostare il fuso orario italiano

Le tue pagine PHP non mostrano l’orario corretto? Probabilmente...

5 script PHP per gestire BBCode

A volte può aversi l'esigenza di dover offrire agli...
Pubblicitร