Comenzar una conversación

Errores de incompatibilidad con PHP 7.0 luego de la conversión

Los únicos errores que pueden ocurrir serán debido a los códigos utilizados en los eventos, bibliotecas y métodos que no sean compatibles con PHP 7.0. Estos errores se deben corregir manualmente.


1 - Short open tags

La directiva short_open_tag informa a PHP si la forma abreviada (<? ?>) De la etiqueta de apertura de PHP está permitida.

Independiente de la versión del php, se debe chequear en php.ini si el short_open_tag está habilitado.

Solución 1:
Cambiar la etiqueta de apertura de php(<?php ?>)
Solución 2:
Cambiar la directiva short_open_tags en php.ini:

short_open_tags = On


2 - Nuevos objetos no se pueden asignar por referencia

El resultado de la declaración new ya no se puede asignar a una variable por referencia:   
<?php
class C {}
$c =& new C;
?>

El ejemplo anterior se imprime para PHP 5:
          Deprecated: Assigning the return value of new by reference is deprecated in /tmp/test.php on line 3

El ejemplo de arriba se imprime para PHP7:
          Parse error: syntax error, unexpected 'new' (T_NEW) in /tmp/test.php on line 3

Solución:
         Retirar la referencia (&) de los atributos:

<?php
class C {}
$c = new C;
?>


3 -Constructores al estilo PHP 4

Los constructores al estilo PHP 4 (métodos que tienen el mismo nombre que la clase donde están definidos) están obsoletos, y serán eliminados en el futuro. El PHP 7 enviará E_DEPRECATED si un constructor de PHP 4 es el único constructor definido en la clase. Las clases que implementan el método __construct () no se ven afectadas.

<?php
class foo {
    function foo() {
        echo 'Eu sou um construtor';
    }
}
?>

El ejemplo de arriba se 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 -Llamadas estáticas a métodos no estáticos

Las llamadas estáticas a métodos que no se han declarado como static están obsoletas, y se pueden quitar en el futuro.

<?php
class foo {
    function bar() {
        echo 'Eu não sou estático!';
    }
}

foo::bar();

?>

El ejemplo de arriba se imprimirá:

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


Para más información:

- Nuevos Recursos de PHP 7.0
 - Recursos obsoletas para PHP 7.0


Fuente: http://php.net

Elegir archivos o arrastra y suelta los archivos
¿Te resulta útil?
No
  1. Jefferson Albuquerque

  2. Publicado
  3. Actualizado

Comentarios