Iniciar uma conversa

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

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
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
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
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
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

Escolher arquivos ou arraste e solte arquivos
Esse artigo foi útil?
Sim
Não
  1. Jefferson Albuquerque

  2. Publicado
  3. Atualizado

Comentários