Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suporte a PHP 8 #735

Closed
4 tasks done
edersoares opened this issue Nov 30, 2020 · 4 comments
Closed
4 tasks done

Suporte a PHP 8 #735

edersoares opened this issue Nov 30, 2020 · 4 comments
Assignees
Labels
enhancement Melhorias no sistema

Comments

@edersoares
Copy link
Member

edersoares commented Nov 30, 2020

A versão 8 do PHP foi anunciada e está sendo encerrado o suporte ativo da versão 7.3 em 06/12/2020 (versões suportadas).

É preciso preparar o i-Educar para esta atualização de segurança/performance.

  • Alterar Travis para rodar os testes na versão 8.
    • GitHub Actions pode ser uma opção também.
  • Remover o suporte da versão 7.3.
  • Seguir a documentação oficial para fazer a migração.

Atualização 04/01/2021

  • Removido suporte do PHP 7.3 na versão 2.5.
@edersoares edersoares added the enhancement Melhorias no sistema label Nov 30, 2020
@jrbarros
Copy link
Contributor

jrbarros commented Dec 21, 2020

Analisando o projeto e vendo esse caminho de migração para a nova versão do PHP tenho alguns pontos:

Migrando o Legado para o PSR-4 vai ser possível usar alguma ferramenta de analise estática para ajudar na atualização do projeto, hoje nenhuma delas consegue achar as referências de classe que o importe não esta usando uma referencia

Atualmente nos arquivos de exibição:

agenda.php

<?php
require_once('Source/Base.php');
require_once('Source/Banco.php');
require_once('Source/Agenda.php');

Como as ferramentas podem achar com mais facilidade:

agenda.php

<?php

use iEducarLegacy\Intranet\Source\Agenda;
use iEducarLegacy\Intranet\Source\Banco;
use iEducarLegacy\Intranet\Source\Cadastro;
use iEducarLegacy\Lib\App\Unificacao\Base;
use iEducarLegacy\Lib\Portabilis\View\Helper\Application;

require_once dirname(__DIR__) .'/../vendor/autoload.php';

@edersoares
Copy link
Member Author

edersoares commented Dec 21, 2020

Boa, @jrbarros!

Apenas vou pontuar alguns pontos importante..

Corrigir palavras reservadas

Já pode ser feito em um PR separado o>

Uma classe por arquivo

É o caminho, mas um pouco mais complexo pois hoje todos os arquivos legados são carregados através do LegacyController que faz o require do que antigamente era acessado diretamente, desta forma o vendor/autoload já foi carregado e o arquivo está sendo executado dentro do contexto de um controller do Laravel e tudo do framework está disponível.

Sugestão de namespace: iEducar\Legacy.

Migrar para PSR-4 a parte legada

A intenção é criar um pacote e fazer o registro do serviço desta parte legada para que assim seja possível removermos e atualizarmos gradativamente partes do sistemas que não serão mais utilizadas ou terão seu ciclo de vida interrompido e/ou modificado em algum momento.

@jrbarros
Copy link
Contributor

Sobre o namespace : iEducar\Legacy Já estava em uso no projeto e deu conflito, mas, é algo a melhorar no que coloquei.

Sobre as chamadas dos arquivos no LegacyController é um caminho interessante, não sei como esta o comportamento do Opache. Seria interessante analisar por este lado opcache preload e php8 JIT

As 'Views' que estão na pasta ideducar/intranet/*.php é o ponto crucial nessa mudança.

@edersoares
Copy link
Member Author

Para os arquivos da pasta ieducar/intranet/*.php pensamos em algo que possa ser feito de forma automatizada criando uma nova estrutura.

Pensamos em retornar uma classe anônima instanciada ou implementar uma interface para ser utilizada em um novo tipo de controller.

O problema são os impactos gerais que precisam ser vistos e bem testados a fim de não quebrar nada, já que não há testes funcionais para estas telas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Melhorias no sistema
Projects
None yet
Development

No branches or pull requests

2 participants