renatomb / php_qrcode_pix

Implementação da geração de QRCode do Pix em PHP
https://dinheiro.tech/qr-code-pix
Creative Commons Zero v1.0 Universal
197 stars 72 forks source link

Problema quando implementado em loops #9

Closed lfercorrea closed 3 years ago

lfercorrea commented 3 years ago

Olá, Primeiramente, obrigado pela criação deste maravilhoso script.

Estou implementando esse script ao PHPMailer para enviar emails em massa aos clientes, com os QRs em anexo (percebi que assim é melhor para evitar os 'falsos positivos' dos filtros de spam).

O problema que ocorre, ao usar em loops, é este:

Fatal error: Cannot redeclare charCodeAt() (previously declared in C:\xampp\htdocs\site\pix\funcoes_pix.php:75) in C:\xampp\htdocs\site\pix\funcoes_pix.php on line 75

Se eu entendi bem, o problema simplesmente ocorre por eu ter implementado o codigo dentro de um loop (eu preciso que seja assim) e, como crcChecksum() é parte dele, ela tenta declarar charCodeAt() de novo e de novo.

Ainda estou pensando numa forma de resolver isso, mas talvez tenha sido uma boa ideia (ou não) mencionar o caso aqui.

renatomb commented 3 years ago

@lfercorrea pelo problema que você descreveu aparentemente você tá tentando declarar a função várias vezes dentro do loop, o que não é necessário e não vai funcionar. você deve modificar seu código para algo nesse estilo:

<?php
require_once("funcoes_pix.php");
for ($i=0;$i<100;$i++) { //Exemplo de um loop
   // Aqui você vai montar o pix conforme os parâmetros que você precisa...
   $pix=montaPix($px);
   $pix.="6304"; //Adiciona o campo do CRC no fim da linha do pix.
   $pix.=crcChecksum($pix); /
}
?>

Ou seja, a parte que declara as funções usando o funcoes_pix fica fora do loop, dentro do loop fica somente a geração do br code.

Espero ter ajudado.

lfercorrea commented 3 years ago

Não é que eu estava declarando charCodeAt(), mas a propria crcChecksum(). Acabei criando outra função para fazer o CRC, porque a crcChecksum() não pode ser usada em loops