resolvendo problema syntax error unexpected end of php



Este erro ocorre geralmente quando esquecemos de fechar uma { (chave, chaveta, brace ou curly bracket). Segue série de motivos que podem ocasionar o erro "unexpected end":

Falta da chave (chavetas) de fechamento:


  
<?php
if (condição) {
     echo "Olá mundo";
?>

Falta do ponto e vírgula no final:


  
<?php
if (condição){
    echo "Olá mundo"
}
?>

Falta de fechar as aspas ou apóstrofo antes do ;:


  
<?php
    echo "Olá mundo;
?>

Apóstrofo faltando:


  
<?php
    echo 'Olá mundo;
?>

Falta de um parêntese:


  
<?php
    metodoChamado(1, 2, 3, "a", "b", "xyz";
?>

Misturar tags PHP (<?php) com short_open_tag (<?):

Claro que isto só vai ocorrer se o servidor estiver com o short_open_tag desligado no php.ini e não será sempre, depende de como usou, teste o exemplo a seguir:


  
<?php
if (true) {
?>
oi
<? /*aqui é um a short_open_tag */
}
?>

No caso do short_tag note que a primeira parte abre o if com {, mas como o que esta dentro de short_open_tag<? ... ?> não é executado, então o PHP não reconhece o }.

A importância da indentação

Algo que pode ajudar a não esquecer de fechar é a indentação. Em tipografia, indentação é o recuo de um texto em relação a sua margem. Em ciência da computação, indentação (recuo, neologismo derivado da palavra em inglês indentation) é um termo aplicado ao código fonte de um programa para ressaltar ou definir a estrutura do algoritmo.

Na maioria das linguagens de programação, a indentação é empregada com o objetivo de ressaltar a estrutura do algoritmo, aumentando assim a legibilidade do código.

Código sem indentação:


  
<?php
$a = 1;
if ($a > 0) {
if ($a > 10) {
$a = 0;
}
echo $a;
}
?>

Código com indentação:


  
<?php
$a = 1;
if ($a > 0) {
    if ($a > 10) {
        $a = 0;
    }
    echo $a;
}
?>

Notou a diferença, assim podemos organizar a "posição" das chaves (chavetas) e ter a facilidade na leitura para ver se ficou faltando alguma chave (chavetas) de fechamento.