ti assicuro che un NOTICE è un'errore a tutti gli effetti ... se in un while provi a usare una variabile non inizializzata per provare a sbloccare una cosa ... non funziona correttamente quella parte e può essere che neanche te ne accorgi
per il discorso register global ... mi spiace ... ma devo dirti che non è esattamente cosi ... ci sono seri rischi e ci sono sempre perché tu non puoi verificare TUTTE le variabili che usi per vedere se sono state precedentemente inizializzate sfruttando le possibilità che il register global da all'attaccante ... e non si tratta di essere bravi si tratta di cose che non si posso fare in pratica, forse, solo nella teoria
vorrebbe dire che dopo che scrivi TUTTO il software e finisci TUTTO ... te lo riprendi da zero e metti tutti i controlli necessari per verificare che tutte le variabili che usi siano non inizializzate a priori ... e spero come tu ti renda conto non è una cosa fattibile per questioni economiche ... se perdi un mese a scrivere un software e 2 settimane a verificare che le variabili siano in un certo modo ... quando disabilitando il register global il problema non lo hai ... e quindi risparmi 2 settimane di lavoro ... beh ... come dire c'è un certo guadagno
come c'è anche l'orrida abitudine di usare la funzione interna global ... argh ... anche questa cosa qua è qualcosa di tremendamente lenta e pesante (letto in un libro scritto da uno degli autori di php, chiedi anche a gm) ... a parte che è cattiva progettazione fare una cosa del genere e viene ridotto anche il controllo che uno ha sui dati in ingresso ... ma se proprio devi ... tanto vale utilizzare l'array superglobale $GLOBALS che contiene TUTTE le variabili inizializzate all'esterno di funzioni e metodi ... che è infinitamente più veloce ... ma comunque è cattiva progettazione fare una cosa del genere
Ad esempio l'uso delle variabili globali riduce tremendamente anche la facilità di riutilizzo del codice ... tramite le classi ben progettate e possibile far si che il proprio codice possa essere preso cosi com'è e spostato senza modificare una riga di codice per farlo funzionare
ci sono tante cose in ballo che di solito vengono tutte a cascata ^^