Bugs PHP Common

October 14

Bugs PHP Common


Ci sono diversi bug di PHP comuni che i programmatori introducono durante la scrittura di codice PHP. Alcuni dei bug causare messaggi di errore dal interprete, ma i messaggi di errore, spesso non si riferiscono al bug reale e può puntare ad una linea completamente diversa nello script. Altri errori non causano alcun messaggio di errore a tutti, ma provocano il programma a comportarsi in modo diverso rispetto al previsto. E 'utile esaminare questi bug comuni, perché questi errori sono fatte da principianti ed esperti programmatori allo stesso modo.

L'utilizzo di un operatore di assegnamento in un'espressione condizionale

Il segno di uguale è un operatore di assegnazione in PHP. Ad esempio, l'istruzione seguente assegna il valore cinque alla variabile $ x:

$ X = 5;

Due segni uguali insieme fanno un operatore condizionale. Ad esempio, l'istruzione seguente assegna il valore tre a $ variabile y, se la variabile $ x è uguale a cinque:

if ($ x == 5) $ y = 3;

Un bug di PHP comune è di omettere uno dei segni uguali nelle espressioni condizionali. Ciò causa l'interprete per eseguire un compito e quindi una valutazione condizionale sul risultato del compito, per cui qualsiasi valore diverso da zero valuterà a "vero". Ad esempio, si consideri la seguente dichiarazione:

if ($ x = 5) $ y = 3;

Il $ y variabile sarà sempre uguale a tre, poiché il valore cinque viene assegnato, anziché rispetto al la $ x variabile. Dal momento che cinque è diverso da zero, il risultato sarà sempre valutare a "true".

L'omissione di un preventivo finali da una stringa

Un altro bug PHP comune si verifica quando non si chiude correttamente una stringa con una citazione finale. E 'facile fare questo, soprattutto se si stia mescolando le virgolette singole e doppie nella stessa stringa. A volte è difficile tenere traccia l'origine di questo errore, perché il messaggio di errore può essere molto diverso dal vero problema, e l'interprete, spesso indica una linea che è più linee del passato in cui il vero problema è. Questo perché l'interprete continua a cercare di elaborare il codice nonostante la citazione mancante. Si consideri il seguente script:

<? Php
$ Stringa1 = 'E lei disse: "Mi chiedo perché?";
$ String2 = 'E lui ha risposto: "Credo di sapere la risposta!"';
if ($ plot_path1)
echo $ stringa1;
altro
echo $ stringa2;

Questo codice genererà un errore "T_STRING inattesa" che punta alla riga che contiene il "if", che è di due righe sotto dove si verifica il vero problema.

Dimenticando il "$" quando si passa da Lingue

programmi PHP hanno spesso sia markup HTML e codice JavaScript intervallati da script PHP. Quando si passa tra PHP e JavaScript, è facile dimenticare che la lingua che si sta utilizzando e di adottare le norme del linguaggio di scripting sbagliato. Un errore comune è quello di omettere il segno di dollaro di fronte a una variabile PHP, essendo tenuta in PHP ma non in JavaScript. Ad esempio, il seguente script omette il simbolo del dollaro dalla variabile "i" in "per" ciclo dopo il frammento di JavaScript del codice:

<? Php
$ Totale = somma ($ parti);
?>
<Script type = "text / javascript">
.? Document.getElementById ( "totalfield") value = <? Php echo $ totale; ?>;
</ Script>
for (i = 0; i <25; i ++) {
processo (voce [i]);
}
?>
I punti di interprete per la linea con l'errore, ma i problemi il messaggio di errore "imprevisto '=', in attesa ''; "

Compreso un punto e virgola dopo un "se" Linea

Poiché la maggior parte linee a fine PHP in un punto e virgola, un bug di PHP comune è quello di includere un punto e virgola dopo una riga con un "if". Questo può essere un problema difficile da rintracciare perché non fa scattare un messaggio di errore. Ad esempio, il seguente script sarà sempre echo "Low on inventario!" a causa della virgola alla fine della linea con la "if". Il punto e virgola elimina efficacemente l'espressione condizionale perché termina la "if", senza valutazione di un'espressione.

<? Php
if ($ count <5);
{
echo "Basso su inventario!";
}