Erros de incompatibilidade com o PHP 7.0 após a conversão

Á

Álvaro Moura

Última atualização em Jul 6, 2026

Os únicos erros que poderão ocorrer serão em decorrência de códigos utilizados nos eventos, bibliotecas e métodos que não sejam compatíveis com o PHP 7.0. Esses erros devem ser corrigidos manualmente.

1 - Short open tags

A diretiva short_open_tag informa ao PHP se a forma abreviada ( ?) da tag de abertura do PHP é permitida.

Independe da versão do php, precisa-se checar no php.ini se o short_open_tags está habilitado.

Solução 1:
Alterar a tag de abertura do php para (php ?)
Solução 2:
Alterar a diretiva short_open_tags no php.ini:

short_open_tags = On

2 - Novos objetos não podem ser atribuídos por referência

: O resultado da declaração new não pode mais ser atribuído a uma variável por referência:

php<br style="box-sizing: border-box" /class C {}  
$c =& new C;  
?>

O exemplo acima irá imprimir no PHP 5:
       Deprecated: Assigning the return value of new by reference is deprecated in /tmp/test.php on line 3

O exemplo acima irá imprimir no PHP 7:
       Parse error: syntax error, unexpected 'new' (T_NEW) in /tmp/test.php on line 3

Solução:
       Retirar referência (&) da atribuição:

php<br style="box-sizing: border-box" /class C {}  
$c = new C;  
?>

3 - Construtores ao estilo PHP 4

Construtores ao estilo PHP 4 (métodos que têm o mesmo nome que a classe onde estão definidos) estão depreciados, e será removido no futuro. O PHP 7 emitirá E_DEPRECATED se um construtor do PHP 4 for o único construtor definido na classe. Classes que implementam o método __construct() não são afetadas.

php<br style="box-sizing: border-box" /class foo {  
    function foo() {  
        echo 'Eu sou um construtor';  
    }  
}  
?>

O exemplo acima irá imprimir:

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; foo has a deprecated constructor in example.php on line 3

4 - Chamadas estáticas a métodos não estáticos

Chamadas estáticas a métodos que não foram declarados como static estão depreciados, e podem ser removidos no futuro.

php<br style="box-sizing: border-box" /class foo {  
    function bar() {  
        echo 'Eu não sou estático!';  
    }  
}  
  
foo::bar();  
  
?>

O exemplo acima irá imprimir:

Deprecated: Non-static method foo::bar() should not be called statically in - on line 8  
I am not static!

Para mais informações:

Novos Recursos do PHP 7.0
 - Recursos depreciados no PHP 7.0

Fonte: http://php.net