Seu módulo funciona em outras versões do PHP? Veja como descobrir.
Desenvolvimento, Desenvolvimento
Publicado em 22 de setembro de 2020
Como de costume, há algumas semanas lancei novas atualizações dos meus módulos PagSeguro para Magento. Poucos dias depois um cliente reportou problemas relacionados à compatibilidade com PHP 5.5 em novas alterações do código feitas após minha atualização.
Embora sempre procure desenvolver a fim de maximizar a compatibilidade de meus módulos, este caso me levou a levar o assunto a sério e desenterrar minhas anotações sobre como resolver o problema. Não apenas o problema do cliente, mas em validar a compatibilidade do meu código/módulo com outras verões do PHP.
E é sobre isso que vamos falar aqui.
PHP Code Sniffer (phpcs)
O PHP_CodeSniffer é um conjunto de 2 “arquivinhos” PHP executáveis.
O primeiro e principal é o phpcs
. Ele é varre arquivos PHP, JavaScript e CSS em busca de violações de um padrão (code standard) especificado. Inclusive já mostramos aqui no Magenteiro como configurar o PhpStorm para validar se o seu módulo está sendo desenvolvido dentro dos padrões recomendados pela Magento.
O segundo “arquivinho” é o phpcbf
(também conhecido como beautifier ou embelezador de código). Ele pode ser usado para corrigir “automagicamente” aquilo que estiver errado.
Instalação do Code Sniffer
O PHP_CodeSniffer pode ser instalado de várias formas. Minha preferida é via composer e é como vou me basear neste artigo.
Para instalar com composer de forma global, ou seja, de forma que ele ficará disponível na sua máquina e não em um projeto específico, use o comando abaixo:
composer global require "squizlabs/php_codesniffer=*"
Se preferir, você pode instalar ele usando git clone, Phive, PEAR, ou simplesmente baixando o .phar de cada um individualmente. Veja outras formas de instalação do PHP_CodeSniffer.
PS: O PHP_CodeSniffer requer PHP 5.4 ou superior. 😉
PHPCompatibility
O PHPCompatibility, assim como os padrões da Magento que mostrei no outro artigo, eles nos permitem validar a compatibilidade de arquivos PHP com diversas versões do PHP desde a 5.0.
Instalação do PHPCompatibility
Da mesma forma, o PHPCompatibility possuí diversas formas de ser instalado. Eu optei por instalar novamente usando composer global
. Fiz isso com o comando abaixo:
composer global require "phpcompatibility/php-compatibility=*"
Juntando tudo e validando a instalação dos requisitos
1. Validando instalação do PHP_CodeSniffer
Localize o arquivo phpcs.phar
ou verifique se possuí algum tipo de mapeamento dele ao digitar phpcs
em seu terminal. Eis algumas sugestões..
$ phpcs --version PHP_CodeSniffer version 3.5.3 (stable) by Squiz (http://www.squiz.net) $ phpcs.phar --version bash: phpcs.phar: command not found $ which phpcs /Users/seuusuario/.composer/vendor/bin/phpcs $ /Users/seuusuario/.composer/vendor/bin/phpcs --version PHP_CodeSniffer version 3.5.3 (stable) by Squiz (http://www.squiz.net)
2. Adicionar code standard ao PhpCs
Se você instalou o PHPCompatibility usando composer, você terá uma pasta chamada ~/.composer/vendor/phpcompatibility/php-compatibility/PHPCompatibility/
.
O PHP_CodeSniffer varrerá todas as pastas listadas em seus paths a fim de disponibilizar novos code standards. Para exibir o arquivo de configuração e os caminhos de code standards disponíveis digite:
$ phpcs --config-show Using config file: /Users/seuusuario/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer.conf installed_paths: /Users/seuusuario/.composer/vendor/squizlabs/php_codesniffer/src/Standards
Por padrão todos os padrões de código estarão na pasta ~/.composer/vendor/squizlabs/php_codesniffer/src/Standards
. Tudo que precisamos fazer é adicionar o nosso PHPCompatibility lá.
$ ls -lah ~/.composer/vendor/squizlabs/php_codesniffer/src/Standards total 0 drwxr-xr-x@ 13 martins staff 416B Sep 10 15:21 ./ drwxr-xr-x@ 16 martins staff 512B Dec 4 2019 ../ drwxr-xr-x@ 6 martins staff 192B Dec 4 2019 Generic/ lrwxr-xr-x@ 1 martins staff 78B Mar 5 2020 Magento1EQP@ -> /Users/seuusuario/www/_libs/magento-code-sniffer-M1-extensionQualityProgram/MEQP1 lrwxr-xr-x@ 1 martins staff 55B Mar 5 2020 Magento2ECG@ -> /Users/seuusuario/www/_libs/Magento2CodeStandard/Magento2/ drwxr-xr-x@ 5 martins staff 160B Dec 4 2019 MySource/ drwxr-xr-x@ 6 martins staff 192B Dec 4 2019 PEAR/ lrwxr-xr-x 1 martins staff 84B Sep 10 15:21 PHPCompatibility@ -> /Users/seuusuario/.composer/vendor/phpcompatibility/php-compatibility/PHPCompatibility/ drwxr-xr-x@ 6 martins staff 192B Dec 4 2019 PSR1/ drwxr-xr-x@ 6 martins staff 192B Dec 4 2019 PSR12/ drwxr-xr-x@ 6 martins staff 192B Dec 4 2019 PSR2/ drwxr-xr-x@ 6 martins staff 192B Dec 4 2019 Squiz/ drwxr-xr-x@ 6 martins staff 192B Dec 4 2019 Zend/
No meu exemplo acima ao listar o conteúdo do diretório de Standards eu tenho um link simbólico do PHPCompatibility apontando para sua pasta do composer. Desta forma ele estará disponível para uso logo em seguida.
Você também pode fazer isso com o comando abaixo:
phpcs --config-set installed_paths /path/to/PHPCompatibility
Note que ele sobrescreverá outros paths definidos anteriormente. Você pode adicionar ele aos paths existentes (exibidos com phpcs --config-show
) da seguinte forma:
phpcs --config-set installed_paths /path/1,/path/2,/path/3
Tudo certo? Vamos brincar…
Testando a compatibilidade de meus códigos PHP
Agora que já temos o phpcs
e o PHPCompatibility instalados e configurados, basta usar o comando abaixo para testar a compatibilidade do nosso código.
phpcs -p /caminho/da/pasta/que/queremos/testar --standard=PHPCompatibility --runtime-set testVersion 7.3
Exemplo prático
E aí? Gostou?
Isso é útil tanto para arquivos comuns PHP, como também para testar nossa loja e seus módulos antes de trocar a versão do PHP em algum lugar.
Espero que tenha gostado. Deixe seu comentário e compartilhe para ajudar o próximo. 😉
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-1/desenvolvimento/teste-compatibilidade-php/"]