Solucionando um script PHP

Você simplesmente não pode escrever scripts sem fazer certos erros. O truque é treinar-se a reconhecê-los, revirar os olhos, dizer: "Não novamente", e apenas corrigi-los. Uma mensagem de erro que você vai ver muitas vezes é

Erro de processamento: analisar erro no c: test.php na linha 7

Esta é a maneira de dizer do PHP "Huh?" Isso significa que ele não entender alguma coisa. Esta mensagem prestativamente aponta para o arquivo eo número da linha onde o PHP ficou confuso. Às vezes é diretamente apontando para o erro, mas às vezes a confusão de PHP resulta de um erro no início do script.

A seguir estão alguns dos erros mais comuns e como evitá-los.

ponto e vírgula em falta

Toda declaração PHP termina com um ponto e vírgula (-). O PHP não pare de ler uma declaração até que ele atinja um ponto e vírgula. Se você deixar de fora o ponto e vírgula no final de uma linha, PHP continua a ler a declaração na linha seguinte. Por exemplo, considere a seguinte declaração:

$ Test = 1
echo $ teste;

Estas declarações não fazem sentido para PHP ele lê as duas linhas como uma declaração, por isso reclama com uma mensagem de erro, como o seguinte:

Erro de processamento: analisar erro no c: test.php na linha 2

Este é um erro muito comum. Antes que você perceba, você estará escrevendo seu endereço de casa com ponto e vírgula no final de cada linha.

Não o suficiente sinais de igual

Em um declaração de comparação, em que você perguntar se dois valores são iguais, você precisa de dois sinais iguais em uma fileira. Usando um sinal de igual é um erro comum. É um erro perfeitamente razoável porque você tem sido usando um sinal de igual para significar igual desde a primeira série, quando você aprendeu que 2 + 2 = 4. Este é um erro difícil de reconhecer porque não causar uma mensagem de erro. Ela só faz o script fazer coisas estranhas, como loops infinitos ou E se blocos, que nunca executar. Você pode se surpreender com quanto tempo você pode olhar para algo parecido com o seguinte código

$ Test = 0-
while ($ test = 0)
{
$ Test ++ -
}

e não ver porque é looping eternamente.

Faltando cifrões

A falta do sinal de dólar em um nome de variável é realmente difícil de ver, mas pelo menos é geralmente resulta em uma mensagem de erro para que você sabe onde olhar para o problema. É geralmente resulta no velho erro de análise familiar:

Erro de processamento: analisar erro no test.php na linha 7

citações preocupantes

Você pode ter muitos, muito poucos, ou o tipo errado de citações. Você tem muitos quando você colocar aspas dentro de aspas, como neste exemplo:

$ Test = "

"-

PHP vê a segunda aspas duplas (") - Antes 100 - como a citação dupla final (") E lê-se o 1 como uma instrução, que não faz sentido. Voila! Outro erro de análise. A linha deve ser

$ Test = "

"-

ou

$ Test = "

"-

Você tem muito poucas citações quando você se esqueça de terminar uma seqüência entre aspas, como

$ Test = "

-

PHP continua a ler as linhas, como parte da cadeia entre aspas até encontrar outra aspa dupla ("), O que não pode ocorrer por várias linhas. Esta é uma ocasião em que o erro de análise que aponta para onde o PHP ficou confuso não está apontando para o erro real. O erro real ocorreu algumas linhas anteriormente, quando você se esqueceu de terminar a string.

Você tem o tipo errado de citações quando você usa uma aspa simples (') Quando você significou um aspas duplas (") ou vice-versa.

matrizes numeradas

PHP acredita que o primeiro valor em uma matriz é numerada zero (0). Claro, os seres humanos tendem a acreditar que as listas começar com o número (1). Desta forma fundamentalmente diferente de ver listas de resultados em nós seres humanos acreditando um array não está funcionando corretamente quando ele está de fato funcionando muito bem. Por exemplo, considere as seguintes declarações:

$ Test = 1-
while ($ test lt; = 3)
{
$ Array [] = $ test-
$ Test ++ -
}
$ Array echo [3];

Não há saída (ou um aviso de erro) resulta. Você pode saltar para a conclusão de que há algo de errado com o loop. Na verdade, está tudo bem. Ele só resulta na seguinte matriz

$ Array [0] = 1
$ Array [1] = 2
$ Array [2] = 3

e não define qualquer coisa em $ Array [3].

Incluindo declarações PHP

Quando um arquivo é lido por meio de um incluir declaração em uma seção PHP, parece razoável que as declarações no arquivo será tratado como declarações PHP. Afinal, PHP adiciona as instruções para o script no ponto em que você incluí-los. No entanto, o PHP não vê dessa forma. Se um arquivo chamado file1.inc contém as seguintes declarações

if (== teste $ 1)
echo "Olá";

e você lê-lo com as seguintes instruções no script principal:

lt;? php
$ Test = 1-
incluem ( "file1.inc") -
?>

Você espera que a palavra Oi para exibir na página da Web. No entanto, a página Web, na verdade, mostra o seguinte:

if ($ teste == 1) echo "Olá";

Claramente, o arquivo que está incluído é visto como HTML. Enviar Oi à página da Web, file1.inc precisa conter os tags PHP.

lt;? php
if (== teste $ 1)
echo "Hi" -
?>

companheiros ausentes

Parênteses e colchetes deve vir em pares. Abrindo com um ( que não tem de fechamento ) ou um { sem } resulta em uma mensagem de erro. Um exemplo disso é quando um parêntese de fechamento aparece onde dois são necessários, como na seguinte declaração:

if (isset ($ test)

Esta declaração precisa de um parêntese de fechamento no final. É muito mais difícil de detectar que um dos seus blocos não se fechou quando você tem blocos dentro de blocos dentro de blocos. Por exemplo, considere o seguinte:

while ($ test lt; 3)
{
if ($ test2! = "yes")
{
if ($ test3> 4)
{
echo "ir" -
}
}

Você pode ver, existem três abertura chaves, mas apenas duas as finais. Imagine que 100 linhas de código estão dentro desses blocos. Pode ser difícil de detectar o problema - especialmente se você acha que o suporte último fechamento está fechando a enquanto loop, mas o PHP vê-lo como fechar a E se loop para $ test2. Em algum lugar mais tarde no seu script, PHP pode estar usando um colchete de fechamento para fechar a enquanto loop que você nem está olhando. Pode ser difícil de detectar o problema de uma grande roteiro.

Recuo blocos torna mais fácil para ver onde colchetes de fechamento pertencem. Você também pode usar os comentários para manter o controle de onde você está, tal como

while ($ test lt; 3)
{
if ($ test2! = "yes")
{
if ($ test3> 4)
{
echo "ir" -
} # Fechamento se o bloco por US $ test3
} # Fechamento se o bloco para $ test2
} # Fechamento, enquanto bloco

parênteses confusas e suportes

Embora o PHP não tem dificuldade em distinguir entre parênteses e colchetes, seus olhos podem nem sempre ser tão confiável - especialmente se você estiver olhando para uma tela de computador para uma maratona de programação de 10 horas. Você pode facilmente confundir ( e {. Usando o errado você recebe uma mensagem de erro de análise.

menu