epayco / epayco-php

PHP wrapper for Epayco API
https://api.epayco.co/
23 stars 22 forks source link

deprecated functions in php^ 8.1 #71

Open BryanVillaDev opened 8 months ago

BryanVillaDev commented 8 months ago

En la librería epayco/epayco-php, específicamente en los archivos Client.php y Resources/Charge.php, se ha identificado un uso obsoleto en la declaración de parámetros opcionales antes de parámetros obligatorios en las firmas de métodos. Esto genera advertencias de tipo "Deprecated" en versiones de PHP 7.4 y posteriores, lo cual puede afectar la compatibilidad y el funcionamiento correcto de la librería en entornos de producción que utilicen estas versiones de PHP.

Archivos y líneas afectadas:

  1. En Client.php:

Problema: Parámetro opcional $data declarado antes del parámetro obligatorio $lang. Línea afectada: 34

  1. En Resources/Charge.php: Problema: Parámetro opcional $options declarado antes del parámetro obligatorio $permission. Línea afectada: 57

Ejemplo de declaración incorrecta: public function ejemplo($parametroOpcional = null, $parametroObligatorio) { // Código }

Solución sugerida: Se recomienda modificar las firmas de los métodos para que todos los parámetros obligatorios se declaren antes de cualquier parámetro opcional. Esto asegura la compatibilidad con las versiones actuales y futuras de PHP, evitando las advertencias de obsolescencia.

Ejemplo de corrección:

public function ejemplo($parametroObligatorio, $parametroOpcional = null) { // Código }

Acción requerida: Sería ideal actualizar estas firmas de métodos en la librería para cumplir con las buenas prácticas de desarrollo en PHP y evitar advertencias que pueden resultar en una mala experiencia para los desarrolladores que utilizan esta librería.

Screenshot 2024-02-26 203735

jesussuarz commented 7 months ago

confirmo que esto es tal cual lo indica @BryanVillaDev en 8.3 genera mismos errores. ¿cuando se tendra un update del sdk para arreglar estos problemas?

neoacevedo commented 2 months ago

En la librería epayco/epayco-php, específicamente en los archivos Client.php y Resources/Charge.php, se ha identificado un uso obsoleto en la declaración de parámetros opcionales antes de parámetros obligatorios en las firmas de métodos. Esto genera advertencias de tipo "Deprecated" en versiones de PHP 7.4 y posteriores, lo cual puede afectar la compatibilidad y el funcionamiento correcto de la librería en entornos de producción que utilicen estas versiones de PHP.

Archivos y líneas afectadas:

1. En Client.php:

Problema: Parámetro opcional $data declarado antes del parámetro obligatorio $lang. Línea afectada: 34

2. En Resources/Charge.php:
   Problema: Parámetro opcional $options declarado antes del parámetro obligatorio $permission.
   Línea afectada: 57

Screenshot 2024-02-26 203735

Si bien es cierto que el proyecto ya no pasa los estándares de PHP >= 8.1 encuentro raro el mensaje de error de la clase Charge ya que la firma del método revert de acuerdo al número de la línea publicado mantiene la estructura correcta, ambos parámetros son opcionales: public function revert($options = null, $permission = ""). Sería más como un error de validación de parte de la integración o se esté usando una versión muy anterior de la librería.

$epayco = new Epayco(
            [
                "apiKey" => $config['epayco.publicKey'],
                "privateKey" => $config['epayco.privateKey'],
                "lenguage" => "ES",
                "test" => $configs['epayco.testMode']
            ]
        );
$charge = $epayco->charge->create();

echo $charge->data->description;

En PHP 8.3 ejecuto el código anterior y obtengo el error desde el servicio web: Los datos son erróneos o son requeridos por favor compruebe.