Com a chegada do PHP7 ganhamos, falando em linhas gerais, melhor processamento de algumas funções que vão de encontro com o Magento na sua versão 1.x, mais ainda na 1.9. Porém o Magento 1 não foi projetado para usar o PHP7 o que nos obriga a fazer algumas modificações e é sobre isso que falarei neste artigo.

Por que usar o PHP7 no Magento?

Para o Magento 1 as versões do PHP indicadas no site oficial são 5.4, 5.5 e 5.6. Com estas versões o Magento rodará 100% sem apresentar erros, mas visando sempre usar as ferramentas mais recentes nos vem a pergunta de por que não usar a versão mais recente do PHP que no caso é o 7? O magento roda bem em praticamente todas as versões, porém devido a uma alteração do código na versão 7  o Magento passou a apresentar erros devido a variáveis que não eram reconhecidas como funções ou objetos. Isso, claro explicando de forma resumida.

Porém resolvendo-se tais conflitos conseguimos um desempenho muito melhor nas requisições do sistema, o que garante uma melhor resposta para o usuário final, mais velocidade, para demonstrar isso veja o resultado conseguido pelo site Atwix que mostra a diferença de desempenho do PHP7 contra a versão 5.6.

Este teste foi feito simulando 20 visitas por segundo acessando uma página de produto configurável, resuiltado de pesquisa e uma página sobre nós.

Usando PHP 5.6

Usando PHP7

Através dos gráficos acima fica clara a vantagem de utilizar o PHP7 no Magento. O PHP7 é realmente mais rápido, o que o torna uma opção muito interessante que vale a tarefa de fazer esta adaptação.

Tornando o Magento 1 compatível com PHP7

Antes de tudo não custa lembrar que você deve fazer backup da sua loja antes de fazer qualquer alteração!

Pesquisando é fácil encontrar o módulo que faz essa compatibilidade para a maioria dos recursos, clique aqui para baixar o módulo de compatibilidade do Magento com PHP7 da inchoo, porém apenas isso não garantirá que o Magento estará funcionando 100%, então vamos lá a estas alterações. alguns erros poderão acontecer, isso porque o PHP7 tem alguns recursos que fazem com que algumas nomenclaturas não sejam mais reconhecidas como objeto, um erro comum de acontecer é este

Fatal error: Uncaught Error: Function name must be a string in app/code/core/Mage/Core/Model/Layout.php:>555

Isso acontece porque no PHP7 precisamos dizer que a variável será chamada como uma função, seguindo o arquivo em app/code/core/Mage/Core/Model/Layout.php, controntraremos:

$out .= $this->getBlock($callback[0])->$callback[1]()

o que precisamos fazer neste caso é acrescentar chaves ({}) envolvendo a variável, que vai ficar assim:

$out .= $this->getBlock($callback[0])->{$callback[1]}();

Esta solução deve resolver 99% dos conflitos com o PHP7, caso encontre outros comente aqui para tornar este artigo ainda mais completo.

Um forte abraço

OBS: Informações tiradas dos sites Inchoo e Atwix.