set_error_handler

  • Creatore Discussione Creatore Discussione ntoflip
  • Data di inizio Data di inizio

ntoflip

Utente Attivo
26 Ago 2008
50
0
0
Ciao a tutti, sono alle primissime armi e quello che cerco al momento sono soprattutto delucidazioni teoriche.
:book: Dal libro che ho sottomano e dal sito php.net sto cercando di capire la gestione degli errori..

Mi è quasi tutto chiaro tranne per alcuni piccoli particolari. Uno di questi riguarda i parametri passati quando si crea il gestore d'errori personalizzato(come a.e. $errno)

Codice:
function myErrorHandler ($errno, $errstr, $errfile, $errline)
{
...
}

set_error_handler('myErrorHandler')

è facile intuire che si riferiscono rispettivamente al numero d'errore, alla stringa che lo descrive, etc.. ma volevo soprattutto capire dove vengono pescati!!

Nel senso: ogni errore generato da php è di per sè una specie di array con valori associati ad ogni chiave di cui sopra ($errno...)?

Vi ringrazio in anticipo per la risposta..
 
Ottima domada, spero di averne capito il senso. :)

Diciamo che ogni esecuzione di codice produce delle particolari intestazioni (headers), in queste intestazioni sono presenti anche eventuali errori a cui sono associati dei valori.
Questi errori sono documentati in modo da poter produrre delle notifiche da segnalare allo sviluppatore.

Alla base di queste segnalazioni vi è una direttiva del file di configurazione, il PHP.ini, denominata error_reporting, che definisce quali errori di PHP devono essere restituiti.

Una delle migliori guide in Rete su errori ed eccezioni e quella redatta dalla W3C.
 
grazie eliox, in effetti quella del W3C è una guida molto chiara.

Quindi, da quello che ho capito, i parametri passati potrebbero essere chiamati anche in un altro modo e non cambierebbe nulla..

Dei cinque possibili, i primi due, obbligatori, si riferiscono al livello (numero) dell'errore e al messaggio, mentre gli altri tre, facoltativi, si riferiscono al file, alla linea al'interno del file, e al contesto (a proposito cos'è il contesto?).

E invece che

Codice:
myErrorHandler($errno,$errstr,$errfile,$errline,$errcontext)

potrei scrivere benissimo

Codice:
myErrorHandler($numero,$messaggio,$file,$linea,$contesto)

giusto??
 
Ultima modifica:

Discussioni simili