Hotfix - General - Evitar errores en PHP 8 #477
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Descripción
Este PR soluciona ciertos errores en PHP 8 encontrados en el core, al ejecutar la herramienta Rector en todo el código de SinergiaCRM.
Cambios realizados
Llamadas estáticas a funciones no estáticas
Se ha observado se realizan llamadas a funciones no estáticas como si éstas fueran estáticas, y esto provoca error en PHP 8:
Deprecated: Non-static method should not be called statically
:Uso de variable obsoleta $HTTP_SERVER_VARS
Hay accesos a la variable obsoleta
$HTTP_SERVER_VARS
. El soporte a esta variable se declaró obsoleto en la versión de php 5.4. Para corregir este error se debe substituir la variable$HTTP_SERVER_VARS
por$_SERVER
$HTTP_SERVER_VARS
por$_SERVER
Operaciones ternarias encadenadas sin paréntesis
En PHP 7.4 se declaró obsoleta la opción de poder encadenar operaciones ternarias sin paréntesis explícitos. En include/SugarFields/Parsers/QuickCreateMetaParser.php se asignaba el resultado de múltiples ternarias sin aplicar paréntesis.
Errores de sintaxis
Se observa una comparación errónea en include/Smarty/plugins/function.ext_includes.php:
Aparece la siguiente comparación:
En el código se evalúa
'.css' == 0
lo que se traduce a0 == 0
:if (strcasecmp(substr($file, -4), 0 == 0))
El paréntesis está mal puesto. Tendría que ser: