{"id":57732,"date":"2023-03-07T07:41:20","date_gmt":"2023-03-07T10:41:20","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=57732&#038;preview=true&#038;preview_id=57732"},"modified":"2023-08-22T03:41:20","modified_gmt":"2023-08-22T06:41:20","slug":"migrando-para-php-8","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/","title":{"rendered":"Migrando para PHP 8.x em Quatro Passos &#8211; Uma Entrevista com Juliette Reinders Folmer"},"content":{"rendered":"<p>Atualizar um site, plugin ou tema do WordPress para uma nova vers\u00e3o do PHP \u00e9 uma tarefa que ocorre regularmente. Mas como fazer isso de forma mais eficiente? Como garantir que voc\u00ea n\u00e3o vai esquecer de nada? Existe um guia para isso?<\/p>\n<p>Neste artigo, abordaremos estas quest\u00f5es (e muito mais) e ver o que est\u00e1 envolvido em uma transi\u00e7\u00e3o suave para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo para isso.<\/p>\n<p>Faremos isso com base em uma entrevista que realizamos com a especialista em PHP, Juliette Reinders Folmer. Ela dedica a maior parte de sua vida di\u00e1ria \u00e0 programa\u00e7\u00e3o e tudo relacionado a ela, focando principalmente em projetos de c\u00f3digo aberto, incluindo o WordPress.<\/p>\n<p>Voc\u00ea est\u00e1 pronto para fazer a transi\u00e7\u00e3o de forma tranquila? Curioso sobre o nosso guia passo a passo? <span style=\"font-size: 1rem\">Ent\u00e3o vamos come\u00e7ar!<\/span><\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>PHP 8.x &#8211; O que mudou<\/h2>\n<p>Para ter uma vis\u00e3o geral das mudan\u00e7as, recomendamos os artigos abaixo:<\/p>\n<ul>\n<li>Notas de lan\u00e7amento para<a href=\"https:\/\/www.php.net\/releases\/8.0\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\"> PHP 8.0<\/a> e <a href=\"https:\/\/www.php.net\/releases\/8.1\/en.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.1<\/a><\/li>\n<li>Guia de migra\u00e7\u00e3o para o <a href=\"https:\/\/www.php.net\/manual\/en\/migration80.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.0<\/a> e <a href=\"https:\/\/www.php.net\/manual\/en\/migration81.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.1<\/a><\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/23\/wordpress-and-php-8-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress e PHP 8.0<\/a> e <a href=\"https:\/\/make.wordpress.org\/core\/2022\/01\/10\/wordpress-5-9-and-php-8-0-8-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">status atual<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/pt\/blog\/php-8\/\">O que h\u00e1 de novo no PHP 8.0<\/a> e <a href=\"https:\/\/kinsta.com\/pt\/blog\/php-8-1\/\">PHP 8.1<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/pt\/blog\/php-8-2\/\">O que h\u00e1 de novo no PHP 8.2<\/a> e\u00a0<a href=\"https:\/\/www.php.net\/manual\/en\/migration82.php\">Guia de migra\u00e7\u00e3o do PHP 8.2<\/a>.<\/li>\n<\/ul>\n<p>Ap\u00f3s ler esses artigos, voc\u00ea estar\u00e1 completamente atualizado sobre o que mudou no PHP 8.x e o que precisa fazer para que seus projetos em PHP funcionem sem problemas.<\/p>\n<p>Se voc\u00ea n\u00e3o tem certeza por onde come\u00e7ar, n\u00e3o h\u00e1 problema. Na conversa com Juliette, discutimos isso em detalhes, e neste artigo, explicaremos de forma mais completa poss\u00edvel como voc\u00ea pode fazer a transi\u00e7\u00e3o para o PHP 8.x.<\/p>\n<p>Tamb\u00e9m explicaremos em caixas informativas como realizar v\u00e1rias opera\u00e7\u00f5es no <a href=\"https:\/\/kinsta.com\/pt\/mykinsta\/\">MyKinsta<\/a>, nosso painel de controle propriet\u00e1rio para todos os seus sites, aplicativos e bancos de dados WordPress.<\/p>\n<h2>Migrando para PHP 8.x: Como Come\u00e7ar<\/h2>\n<p>Migrar para o PHP 8.x pode parecer simples e, tecnicamente, \u00e9. Muitos provedores de hospedagem permitem que voc\u00ea especifique qual vers\u00e3o do PHP deseja usar para o seu site no painel de controle. Na Kinsta, a <a href=\"https:\/\/kinsta.com\/pt\/changelog\/php-8\/\">troca da vers\u00e3o do PHP<\/a> pode ser feita com um \u00fanico clique no painel MyKinsta.<\/p>\n<p>Mas antes disso, h\u00e1 algumas coisas de que voc\u00ea precisa ter certeza. Dependendo do seu n\u00edvel de conhecimento e experi\u00eancia, recomendamos o seguinte:<\/p>\n<ul>\n<li>Se voc\u00ea construiu seu pr\u00f3prio site WordPress com temas e plugins padr\u00e3o, sem ter muito conhecimento de PHP, contrate um desenvolvedor ou uma ag\u00eancia para investigar se seu site \u00e9 adequado para rodar no PHP 8.x. Voc\u00ea est\u00e1 procurando por um terceiro que possa ajud\u00e1-lo com isso? Ent\u00e3o olhe <a href=\"https:\/\/kinsta.com\/pt\/socios\/\">nossa p\u00e1gina de Parceiros<\/a>, onde listamos v\u00e1rias empresas confi\u00e1veis que podem ajudar voc\u00ea.<\/li>\n<li>Se o seu site WordPress foi constru\u00eddo por uma parte externa, um desenvolvedor ou uma ag\u00eancia, entre em contato com eles para perguntar se o seu site pode funcionar no PHP 8.x.<\/li>\n<li>Se voc\u00ea construiu o seu site WordPress \u2014 com o seu pr\u00f3prio tema personalizado, por exemplo, ou plugins desenvolvidos por voc\u00ea \u2014 temos um guia para voc\u00ea abaixo.<\/li>\n<\/ul>\n<p>Se o seu site se encaixa em uma das duas primeiras categorias, n\u00f3s o convidamos a ler o restante do artigo, mas n\u00e3o recomendamos que voc\u00ea comece a testar a compatibilidade do seu site com o PHP 8 por conta pr\u00f3pria. Deixe isso para os profissionais.<\/p>\n<p>Seja qual for a sua escolha, aconselhamos a n\u00e3o simplesmente mudar o seu site de produ\u00e7\u00e3o para o PHP 8 e &#8220;ver se funciona&#8221;. Se voc\u00ea est\u00e1 curioso para saber como seu site ficar\u00e1 e n\u00e3o pode esperar para v\u00ea-lo funcionando com o PHP 8, comece os testes em um ambiente de teste. Um bom provedor de hospedagem de sites permitir\u00e1 que voc\u00ea <a href=\"https:\/\/kinsta.com\/pt\/blog\/site-de-teste-wordpress\/\">configure facilmente um ambiente de teste<\/a>.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Criar um ambiente de teste na Kinsta \u00e9 f\u00e1cil.<\/p>\n<p>No <a href=\"https:\/\/my.kinsta.com\/?lang=pt?lang=en\">MyKinsta<\/a>, clique em <strong>Sites WordPress <\/strong>na navega\u00e7\u00e3o \u00e0 esquerda. Voc\u00ea ver\u00e1 agora uma lista dos seus sites\/instala\u00e7\u00f5es WordPress. Escolha o site para o qual voc\u00ea deseja criar um ambiente de teste, clique no <strong>Selecionador de Ambiente <\/strong>ao lado do nome do site e escolha <strong>Criar um novo ambiente <\/strong>a partir do menu suspenso. No menu <strong>Criar um novo ambiente <\/strong>modal\/pop-up que aparece, d\u00ea um nome ao seu ambiente, escolha <strong>Ambiente padr\u00e3o<\/strong> e clique no bot\u00e3o <strong>Criar um novo ambiente<\/strong>.<\/p>\n<p>A seguir, voc\u00ea ser\u00e1 solicitado para escolher o ambiente que voc\u00ea deseja criar. Escolha a op\u00e7\u00e3o 1, <strong>Clonar um ambiente existente<\/strong>. Agora clique no bot\u00e3o <strong>Criar um novo ambiente<\/strong>, ap\u00f3s o qual a cria\u00e7\u00e3o do novo ambiente ser\u00e1 iniciada. Isto pode levar alguns minutos. Quando o processo estiver completo, voc\u00ea pode escolher o novo ambiente de cria\u00e7\u00e3o padr\u00e3o no menu suspenso <strong>Selecionador de Ambiente <\/strong>ao lado do nome do site.<\/p>\n<p>Aprenda mais sobre como <a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/ambiente-de-teste\/\">criar um ambiente de teste<\/a>.<\/p>\n<\/aside>\n\n<figure id=\"attachment_147928\" aria-describedby=\"caption-attachment-147928\" style=\"width: 2864px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147928 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/mykinsta-create-new-environment-eng0.png\" alt=\"MyKinsta - Criar um novo ambiente\" width=\"2864\" height=\"968\"><figcaption id=\"caption-attachment-147928\" class=\"wp-caption-text\">MyKinsta &#8211; Criar um novo ambiente<\/figcaption><\/figure>\n<p>No ambiente de teste, voc\u00ea pode ativar o PHP 8.x e ver se esta atualiza\u00e7\u00e3o funciona bem com o seu site. Tamb\u00e9m \u00e9 poss\u00edvel trabalhar com uma c\u00f3pia local do seu site. Com nossa <a href=\"https:\/\/kinsta.com\/pt\/devkinsta\/\">ferramenta gratuita de desenvolvimento DevKinsta<\/a>, voc\u00ea pode facilmente importar seu site do <a href=\"https:\/\/kinsta.com\/pt\/mykinsta\/\">painel MyKinsta<\/a> e, em seguida, voc\u00ea pode mudar a vers\u00e3o do PHP para 8.0 ou 8.1.<\/p>\n<p>No entanto, se voc\u00ea n\u00e3o encontrar problemas no ambiente de teste, isso n\u00e3o garante que n\u00e3o existam problemas reais. O guia abaixo explicar\u00e1 o motivo.<\/p>\n<h2>Teste de compatibilidade com o PHP 8.x: O guia<\/h2>\n<p>Teste: a palavra-chave para um bom software. Mesmo para sites WordPress e seus componentes, tais como temas, plugins e o n\u00facleo do WordPress, testar \u00e9 o meio de garantir que n\u00e3o aconte\u00e7am coisas que voc\u00ea n\u00e3o queira que aconte\u00e7am.<\/p>\n<p>Um projeto de desenvolvimento de software consiste amplamente em testes. Neste artigo, analisamos especificamente os testes que podem ajudar voc\u00ea a fazer a transi\u00e7\u00e3o para o PHP 8.x de forma tranquila. Em nosso artigo sobre Ferramentas de DevOps, voc\u00ea encontrar\u00e1 uma se\u00e7\u00e3o com uma <a href=\"https:\/\/kinsta.com\/pt\/blog\/ferramentas-devops\/#devops-testtools\">cole\u00e7\u00e3o de ferramentas<\/a> que voc\u00ea pode usar.<\/p>\n<p>Os seguintes tipos de testes s\u00e3o discutidos neste post do blog:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<p>Vamos analisar mais de perto os diferentes tipos de testes que podemos realizar.<\/p>\n<h3>An\u00e1lise est\u00e1tica (ou teste est\u00e1tico)<\/h3>\n<p>O primeiro passo que voc\u00ea pode dar como um desenvolvedor PHP \u00e9 realizar uma an\u00e1lise est\u00e1tica do seu c\u00f3digo com v\u00e1rias ferramentas. A an\u00e1lise est\u00e1tica \u00e9 o processo de an\u00e1lise de software sem executar o c\u00f3digo. Com a an\u00e1lise est\u00e1tica, \u00e9 poss\u00edvel detectar erros, detectar problemas com a compatibilidade do PHP 8.x, impor padr\u00f5es de codifica\u00e7\u00e3o (por exemplo, os <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/best-practices\/coding-standards\/\" target=\"_blank\" rel=\"noopener noreferrer\">Padr\u00f5es de Codifica\u00e7\u00e3o do WordPress<\/a>) e at\u00e9 mesmo modificar e limpar o c\u00f3digo \u00e9 poss\u00edvel.<\/p>\n<h4>Ferramentas para an\u00e1lise est\u00e1tica<\/h4>\n<p>Voc\u00ea pode realizar uma an\u00e1lise est\u00e1tica com v\u00e1rias ferramentas, como por exemplo:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\" target=\"_blank\" rel=\"noopener noreferrer\">PHPCompatibility<\/a><\/li>\n<li><a href=\"https:\/\/psalm.dev\/\" target=\"_blank\" rel=\"noopener noreferrer\">Psalm<\/a><\/li>\n<li><a href=\"https:\/\/phpstan.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPStan<\/a><\/li>\n<\/ul>\n<p>No momento da escrita, nem todos os testes para o PHP 8.1 s\u00e3o suportados na vers\u00e3o mais recente do PHPCompatibility. Os testes para o PHP 8.1 podem estar presentes na vers\u00e3o de desenvolvimento, portanto, certifique-se de us\u00e1-los (por enquanto) ao utilizar o PHPCompatibility para analisar seu projeto e verificar quais erros\/recomenda\u00e7\u00f5es existem.<\/p>\n<p>Os testes para o PHP 8.1 ser\u00e3o em breve lan\u00e7ados em uma nova vers\u00e3o principal. Se voc\u00ea deseja se manter atualizado sobre isso e possui uma conta no GitHub, acesse o <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\">reposit\u00f3rio GitHub do PHPCompatibility<\/a> e v\u00e1 para <strong>Watch <\/strong>-&gt;<strong> Custom <\/strong>-&gt;<strong> Releases<\/strong>, onde voc\u00ea pode escolher ser notificado quando uma nova vers\u00e3o for lan\u00e7ada.<\/p>\n<p>O PHPCompatibility, que testa apenas a compatibilidade para uma vers\u00e3o espec\u00edfica (ou intervalo de vers\u00f5es) do PHP, \u00e9 f\u00e1cil de configurar. Voc\u00ea obt\u00e9m os melhores resultados se executar um teste para uma vers\u00e3o espec\u00edfica (<a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions\" target=\"_blank\" rel=\"noopener noreferrer\">testVersion<\/a>) &#8211; por exemplo, 8.0+ (8.0 em diante) &#8211; no PHPCompatibility.<\/p>\n<p>Voc\u00ea deve ficar atento a fun\u00e7\u00f5es depreciadas ou removidas, valores padr\u00e3o alterados para par\u00e2metros de fun\u00e7\u00e3o, o uso de concatena\u00e7\u00e3o sem par\u00eanteses, o uso do termo &#8220;match&#8221; como nome de fun\u00e7\u00e3o (j\u00e1 que foi reservado desde o PHP 8.0), entre outros.<\/p>\n<figure id=\"attachment_147872\" aria-describedby=\"caption-attachment-147872\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147872 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/PHPCompatibility-1024x619-1.png\" alt=\"Tela da p\u00e1gina GitHub PHPCompatibility\" width=\"1024\" height=\"619\"><figcaption id=\"caption-attachment-147872\" class=\"wp-caption-text\">Tela da p\u00e1gina GitHub PHPCompatibility<\/figcaption><\/figure>\n<p>Psalm e PHPStan s\u00e3o boas adi\u00e7\u00f5es e podem ajudar voc\u00ea a realizar verifica\u00e7\u00f5es adicionais relacionadas aos tipos de vari\u00e1veis. A desvantagem dessas ferramentas \u00e9 que elas exigem muita configura\u00e7\u00e3o para obter relat\u00f3rios sobre o PHP 8.0 e 8.1. Mesmo que sejam bem-sucedidas, \u00e9 poss\u00edvel esperar muitos falsos positivos. Falsos positivos s\u00e3o notifica\u00e7\u00f5es dadas erroneamente, causadas pelas limita\u00e7\u00f5es da an\u00e1lise est\u00e1tica.<\/p>\n<p>O conhecimento s\u00f3lido \u00e9 necess\u00e1rio para interpretar corretamente os resultados dessas duas ferramentas, mas esse conhecimento pode ajud\u00e1-lo a identificar incompatibilidades adicionais que a PHPCompatibility n\u00e3o pode encontrar. Veja a documenta\u00e7\u00e3o do <a href=\"https:\/\/psalm.dev\/docs\/\" target=\"_blank\" rel=\"noopener noreferrer\">Psalm<\/a> e <a href=\"https:\/\/phpstan.org\/user-guide\/getting-started\" target=\"_blank\" rel=\"noopener noreferrer\">PHPStan<\/a> se voc\u00ea quiser aprender mais sobre eles.<\/p>\n<p>Resumo:<\/p>\n<ul>\n<li>Realize an\u00e1lise est\u00e1tica com PHPCompatibility, Psalm, PHPStan<\/li>\n<li>Resolva todos os problemas leg\u00edtimos<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Dica da especialista Juliette<\/strong><\/p>\n<p>Durante os testes, no arquivo php.ini \/ wp-config.php, defina o error_reporting como -1. Isso ocorre porque E_ALL, dependendo da vers\u00e3o do PHP, n\u00e3o cont\u00e9m tudo.<\/p>\n<p>Somente a partir da vers\u00e3o 8.0 \u00e9 que E_ALL cont\u00e9m tudo. Al\u00e9m disso, ative o log_errors para revisar as notifica\u00e7\u00f5es em um arquivo de registro.<\/p>\n<p>N\u00e3o ative o registro de erros em um site ao vivo, pois pode causar atrasos, j\u00e1 que precisa gravar dados em um arquivo. Portanto, fa\u00e7a isso em um ambiente de teste (staging) e certifique-se de entender o que acontece.<\/p>\n<p>Para ver seus registros no MyKinsta, v\u00e1 para o site e clique em <strong>Registros <\/strong>no menu. Aqui voc\u00ea pode ver os arquivos error.log e access.log e estudar todas as entradas de registro.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/solucao-de-problemas-wordpress\/visualizar-registros-do-servidor\/\">Clique aqui para saber mais sobre a visualiza\u00e7\u00e3o de registros no MyKinsta<\/a>.<\/p>\n<\/aside>\n\n<figure id=\"attachment_147929\" aria-describedby=\"caption-attachment-147929\" style=\"width: 2806px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147929 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/mykinsta-access-logs-eng0.png\" alt=\"MyKinsta - Visualizando arquivos de registro\" width=\"2806\" height=\"1746\"><figcaption id=\"caption-attachment-147929\" class=\"wp-caption-text\">MyKinsta &#8211; Visualizando arquivos de registro<\/figcaption><\/figure>\n<h3>Teste unit\u00e1rio<\/h3>\n<p>O pr\u00f3ximo passo no processo \u00e9 o teste unit\u00e1rio. O teste unit\u00e1rio \u00e9 um m\u00e9todo de testar partes de c\u00f3digo individualmente. No teste unit\u00e1rio, testes espec\u00edficos e direcionados ser\u00e3o desenvolvidos para cada unidade de c\u00f3digo. Isso envolver\u00e1 a execu\u00e7\u00e3o de diferentes cen\u00e1rios. Preferencialmente, cada cen\u00e1rio \u00e9 testado separadamente dos outros para os testes serem independentes entre si.<\/p>\n<p>Ter apenas testes unit\u00e1rios, \u00e9 claro, n\u00e3o \u00e9 suficiente. Eles tamb\u00e9m precisam ser executados. Os testes unit\u00e1rios s\u00e3o melhor automatizados usando ferramentas de CI (integra\u00e7\u00e3o cont\u00ednua), como <a href=\"https:\/\/www.jenkins.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jenkins<\/a>, <a href=\"https:\/\/github.com\/features\/actions\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Actions<\/a>, ou <a href=\"https:\/\/www.travis-ci.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Travis<\/a>.<\/p>\n<figure id=\"attachment_147875\" aria-describedby=\"caption-attachment-147875\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147875 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/github-actions-1024x687-1.png\" alt=\"Um exemplo das a\u00e7\u00f5es do GitHub\" width=\"1024\" height=\"687\"><figcaption id=\"caption-attachment-147875\" class=\"wp-caption-text\">Um exemplo das a\u00e7\u00f5es do GitHub<\/figcaption><\/figure>\n<h4>Suportando m\u00faltiplas vers\u00f5es do PHP<\/h4>\n<p>Como um construtor de plugins, se voc\u00ea quiser suportar m\u00faltiplas vers\u00f5es do PHP, certifique-se de que os testes no CI sejam executados em todas as vers\u00f5es do PHP que voc\u00ea deseja suportar.<\/p>\n<p>\u00c9 claro que voc\u00ea tamb\u00e9m pode optar por suportar apenas as vers\u00f5es mais recentes, a escolha \u00e9 totalmente sua.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Dica da especialista Juliette<\/strong><\/p>\n<p>No GitHub Actions, voc\u00ea j\u00e1 pode testar em rela\u00e7\u00e3o ao PHP 8.2, o que garantir\u00e1 que voc\u00ea receba avisos oportunos sobre novas mudan\u00e7as no PHP que voc\u00ea precisa considerar.<\/p>\n<\/aside>\n\n<p>Testar com v\u00e1rias vers\u00f5es do PHP requer o uso de v\u00e1rias vers\u00f5es do PHPUnit, dependendo da vers\u00e3o do PHP. Como o PHPUnit introduziu v\u00e1rias mudan\u00e7as ao longo dos anos que afetam a maneira como os testes s\u00e3o escritos, essa parte pode ser complicada.<\/p>\n<p>Para contornar isso, voc\u00ea pode usar o <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit Polyfills<\/a> (escrito por Juliette e patrocinado pela <a href=\"https:\/\/kinsta.com\/partners\/yoast\/\">Yoast<\/a>). Isso permite que voc\u00ea escreva testes que n\u00e3o s\u00e3o oficialmente suportados pelo PHPUnit 9 (e assim podem ser executados no PHP 8.x). Os Polyfills ent\u00e3o fazem seus testes funcionarem no PHPUnit 4.x at\u00e9 9.x e com PHP 5.4 at\u00e9 PHP 8.1 (a partir de agora).[\/notice]<\/p>\n<p>Agora que voc\u00ea tem os testes em andamento, o pr\u00f3ximo passo \u00e9 certificar-se de que os problemas encontrados nos testes sejam corrigidos.<\/p>\n<h4>Cobertura de c\u00f3digo<\/h4>\n<p>A execu\u00e7\u00e3o desses testes \u00e9 a maneira mais confi\u00e1vel de encontrar incompatibilidades de vers\u00e3o cruzada.<\/p>\n<p>Ao fazer isso, preste aten\u00e7\u00e3o na <em>cobertura de c\u00f3digo <\/em>dos seus testes:<\/p>\n<ul>\n<li>Suponha que voc\u00ea tenha uma fun\u00e7\u00e3o A e tenha escrito um teste para ela, e a fun\u00e7\u00e3o A chama as fun\u00e7\u00f5es B, C e D como parte da l\u00f3gica da fun\u00e7\u00e3o.<\/li>\n<li>O teste para a fun\u00e7\u00e3o A \u00e9 escrito para testar a l\u00f3gica da fun\u00e7\u00e3o A, mas tamb\u00e9m chamar\u00e1 as fun\u00e7\u00f5es B, C e D durante os testes. Para as fun\u00e7\u00f5es B, C e D, voc\u00ea normalmente s\u00f3 testa o &#8220;caminho feliz&#8221; &#8211; a situa\u00e7\u00e3o em que tudo corre bem &#8211; e, portanto, essas fun\u00e7\u00f5es tamb\u00e9m n\u00e3o s\u00e3o totalmente testadas, embora (parte) do c\u00f3digo dessas fun\u00e7\u00f5es seja executado durante o teste da fun\u00e7\u00e3o A.<\/li>\n<li>Para cada um de seus testes, indique qual c\u00f3digo est\u00e1 sendo testado especificamente. Voc\u00ea faz isso dando a cada teste uma <a href=\"https:\/\/phpunit.readthedocs.io\/en\/9.5\/code-coverage-analysis.html#specifying-covered-code-parts\" target=\"_blank\" rel=\"noopener noreferrer\">@covers<\/a> Desta forma, B, C e D n\u00e3o s\u00e3o &#8220;contados&#8221; no c\u00e1lculo da cobertura do c\u00f3digo, o que permite que voc\u00ea veja qual parte do seu c\u00f3digo \u00e9 coberta pelos testes.<\/li>\n<\/ul>\n<p>Muitas vezes, os desenvolvedores escrevem e testam &#8211; \u00e0s vezes, at\u00e9 sem saber &#8211; para o &#8220;caminho feliz&#8221;. Nesses casos, tamb\u00e9m \u00e9 necess\u00e1rio testar o que acontece quando dados inesperados s\u00e3o passados para uma fun\u00e7\u00e3o. <strong>Testar apenas com valores\/tipos esperados n\u00e3o \u00e9 suficiente<\/strong>.<\/p>\n\n<p>A segunda parte da cita\u00e7\u00e3o acima \u00e9 frequentemente esquecida, quando talvez seja ainda mais importante do que a primeira parte. O que acontece se voc\u00ea passar um tipo incorreto? Voc\u00ea recebe uma mensagem de erro? Ou o elenco da vari\u00e1vel com a fun\u00e7\u00e3o continua como normal? O que acontece se um valor inesperado for passado para a fun\u00e7\u00e3o?<\/p>\n<p>Certifique-se de testar suas fun\u00e7\u00f5es com vari\u00e1veis, tipos e valores inesperados. Somente ent\u00e3o voc\u00ea pode confiar em seus testes para encontrar problemas que uma nova vers\u00e3o do PHP pode causar.<\/p>\n<h4>O PHP est\u00e1 ficando mais rigoroso<\/h4>\n<p>O PHP est\u00e1 se tornando mais preciso (rigoroso) em como ele lida com &#8220;tipos&#8221; para as pr\u00f3prias fun\u00e7\u00f5es do PHP, assim como coisas como propriedades din\u00e2micas. Essas mudan\u00e7as s\u00e3o geralmente destinadas para ajudar os desenvolvedores a entregar c\u00f3digo com menos erros. Mas isso pode apresentar um grande obst\u00e1culo para a atualiza\u00e7\u00e3o de c\u00f3digo pr\u00e9-existente escrito com base nos &#8220;velhos&#8221; princ\u00edpios do PHP.<\/p>\n<p>Devido \u00e0 busca por mensagens de erro mais \u00fateis no PHP, atualizar o c\u00f3digo existente para ser compat\u00edvel com novas vers\u00f5es leva cada vez mais tempo. Fazer um c\u00f3digo que funcionava no PHP 5.6 ser adequado para o PHP 7.0 levava menos tempo do que atualiz\u00e1-lo para o PHP 8.1, apesar do PHP 7.0 ser uma vers\u00e3o &#8220;maior&#8221; e o PHP 8.1 ser uma vers\u00e3o &#8220;menor&#8221;.<\/p>\n<p>Em muitos casos, os testes ainda s\u00e3o a \u00fanica maneira confi\u00e1vel de determinar o que precisa ser modificado para suportar uma nova vers\u00e3o.<\/p>\n<p>Os testes unit\u00e1rios s\u00e3o poss\u00edveis com v\u00e1rias ferramentas, inclusive:<\/p>\n<ul>\n<li><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a><\/li>\n<li><a href=\"http:\/\/docs.mockery.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mockery<\/a><\/li>\n<li><a href=\"https:\/\/docs.behat.org\/en\/latest\/\" target=\"_blank\" rel=\"noopener noreferrer\">Behat<\/a>,<\/li>\n<li><a href=\"http:\/\/datasift.github.io\/storyplayer\/v2\/using\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">Storyplayer<\/a><\/li>\n<\/ul>\n<p>Muitas dessas ferramentas s\u00e3o constru\u00eddas com base ou em conjunto com o PHPUnit.<\/p>\n<p>No final das contas, n\u00e3o importa quais ferramentas voc\u00ea usa. O mais importante \u00e9 que voc\u00ea teste, e ponha os testes em execu\u00e7\u00e3o em novas vers\u00f5es PHP. Este passo \u00e0s vezes pode ser muito complicado, mas felizmente, como mencionado anteriormente, existem ferramentas para isso, como o <a href=\"https:\/\/github.com\/Yoast\/PHPUnit-Polyfills\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit Polyfills<\/a>.<\/p>\n<h3>Teste de integra\u00e7\u00e3o<\/h3>\n<p>O teste de integra\u00e7\u00e3o \u00e9 o pr\u00f3ximo passo que executaremos, ap\u00f3s a an\u00e1lise est\u00e1tica e os testes unit\u00e1rios. Um teste de integra\u00e7\u00e3o \u00e9 onde situa\u00e7\u00f5es da vida real s\u00e3o testadas em um contexto maior do que apenas uma &#8220;unidade de c\u00f3digo&#8221; Estes incluem testes com um banco de dados ativo (teste) ou testes com uma <a href=\"https:\/\/kinsta.com\/pt\/blog\/laravel-http\/\">API externa<\/a>, para dar apenas dois exemplos.<\/p>\n<p>Ent\u00e3o, quando voc\u00ea testa o c\u00f3digo de um plugin ou tema no contexto do WordPress e usa uma vers\u00e3o real, estes s\u00e3o, por defini\u00e7\u00e3o, testes de integra\u00e7\u00e3o.<\/p>\n<p>WP Test Utils (novamente escrito por Juliette e patrocinado pela Yoast) \u00e9 uma excelente ferramenta para testes de integra\u00e7\u00e3o. WP Test Utils fornece ferramentas para escrever integra\u00e7\u00e3o e testes unit\u00e1rios, nos quais o WordPress \u00e9 &#8220;ridicularizado&#8221; usando <a href=\"https:\/\/github.com\/Brain-WP\/BrainMonkey\" target=\"_blank\" rel=\"noopener noreferrer\">Brainmonkey<\/a> e <a href=\"http:\/\/docs.mockery.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Mockery<\/a>, onde as fun\u00e7\u00f5es comumente usadas no WordPress s\u00e3o &#8220;falsas&#8221; para que voc\u00ea esteja testando seu pr\u00f3prio c\u00f3digo e n\u00e3o o c\u00f3digo do WordPress.<\/p>\n<figure id=\"attachment_147877\" aria-describedby=\"caption-attachment-147877\" style=\"width: 911px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147877 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/wp-test-utils.png\" alt=\"WP Test Utilities no GitHub\" width=\"911\" height=\"648\"><figcaption id=\"caption-attachment-147877\" class=\"wp-caption-text\">WP Test Utilities no GitHub<\/figcaption><\/figure>\n<p>O teste de integra\u00e7\u00e3o com o WordPress \u00e9 uma hist\u00f3ria mais complicada porque envolve a integra\u00e7\u00e3o com o WordPress e a su\u00edte de testes do WordPress. Dependendo de quais vers\u00f5es do WordPress um plugin ou tema suporta, voc\u00ea tem que considerar quais vers\u00f5es do PHPUnit s\u00e3o suportadas pelo pr\u00f3prio WordPress para executar os testes em diferentes vers\u00f5es do PHP.<\/p>\n<p>Por exemplo, o WordPress 5.6 at\u00e9 5.8 usa <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/phpunit-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit 5 at\u00e9 7<\/a> para testar <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/references\/php-compatibility-and-wordpress-versions\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 5.6 at\u00e9 PHP 8.0<\/a>, mas a partir do WordPress 5.9, o pr\u00f3prio WordPress tamb\u00e9m usa PHPUnit Polyfills para um suporte mais amplo. WP Test Utils atua como uma ponte para superar todas essas diferen\u00e7as.<\/p>\n<p>Quer saber mais sobre como executar testes de integra\u00e7\u00e3o contra v\u00e1rias vers\u00f5es diferentes do WordPress, incluindo WordPress 5.9 e vers\u00f5es anteriores? Ent\u00e3o <a href=\"https:\/\/make.wordpress.org\/core\/2021\/09\/27\/changes-to-the-wordpress-core-php-test-suite\/\" target=\"_blank\" rel=\"noopener noreferrer\">leia sobre isso no site do WordPress<\/a>.<\/p>\n<h3>Testes manuais<\/h3>\n<p>Agora que voc\u00ea passou pelos testes unit\u00e1rios e testes de integra\u00e7\u00e3o e corrigiu todos os problemas encontrados, \u00e9 hora de fazer o teste manual. Seu site est\u00e1 funcionando, e seu pr\u00f3prio c\u00f3digo est\u00e1 em ordem, mas voc\u00ea tamb\u00e9m est\u00e1 usando os plugins A, B e C. Voc\u00ea sabe se esses plugins s\u00e3o compat\u00edveis?<\/p>\n<p>Por exemplo, verifique isso com os autores dos plugins e veja se eles indicam que s\u00e3o compat\u00edveis com o PHP 8.x. A quest\u00e3o, \u00e9 claro, \u00e9 como o plugin foi testado. Geralmente, a resposta \u00e9: de forma isolada. As fun\u00e7\u00f5es do plugin foram normalmente testadas em conjunto apenas com o WordPress, sem outros plugins ativos. E mesmo que outros plugins tenham sido usados nos testes, \u00e9 prov\u00e1vel que nem todos os plugins usados por voc\u00ea sejam parte dos testes, portanto, leve tal declara\u00e7\u00e3o de compatibilidade com cautela.<\/p>\n<p>Por exemplo, um site WordPress com 3 plugins (A, B, e C). \u00c9 poss\u00edvel que o plugin B, por exemplo, retorne um tipo de vari\u00e1vel incorreta atrav\u00e9s de um filtro, com o qual o plugin C, usando o mesmo filtro, quer trabalhar. Isso pode ent\u00e3o causar um erro fatal porque o tipo n\u00e3o \u00e9 mais o que se espera. O plugin C \u00e9 ent\u00e3o visto como o culpado pela mensagem de erro, mesmo que o plugin B seja o verdadeiro infrator.<\/p>\n<p>Incompatibilidades de interoperabilidade de plugins s\u00e3o imposs\u00edveis de descobrir quando testadas de forma isolada. Quanto mais plugins ativos, maior a probabilidade de algo dar errado. Por exemplo, seria muito \u00fatil encaminhar as solicita\u00e7\u00f5es de p\u00e1gina de um site de produ\u00e7\u00e3o para um ambiente de teste (com registro de erros ativado) para descobrir o que est\u00e1 dando realmente errado.<\/p>\n<p>Com este tipo de problema, geralmente o propriet\u00e1rio do site s\u00f3 ver\u00e1 uma mensagem de que houve um erro com o \u00faltimo c\u00f3digo executado (neste caso, do plugin C), embora o plugin C n\u00e3o seja necessariamente a causa do problema.<\/p>\n<p>Geralmente, h\u00e1 uma grande quantidade de trabalho manual humano envolvido, e \u00e9 necess\u00e1ria uma boa dose de esfor\u00e7o para detectar e corrigir esses problemas. Isso poderia ser automatizado usando testes de ponta a ponta, mas n\u00e3o vemos isso acontecendo muito no WordPress.<\/p>\n<h4>Teste de disponibilidade para plugins utilizados<\/h4>\n<p>Para desenvolvedores e equipes de desenvolvimento: Aceite o c\u00f3digo somente quando os testes estiverem dispon\u00edveis. Dessa forma, voc\u00ea garante que menos testes manuais ser\u00e3o necess\u00e1rios, economizando muito tempo.<\/p>\n<p>Questione a estrat\u00e9gia de teste ao considerar a compra de um plugin ou tema comercial. Dessa forma, criamos coletivamente conscientiza\u00e7\u00e3o entre os desenvolvedores\/equipes de desenvolvimento na comunidade WordPress para priorizar os testes, e todos nos beneficiamos.<\/p>\n<p>Os testes s\u00e3o frequentemente vistos &#8211; de forma injusta &#8211; como um custo, quando na realidade eles economizam dinheiro. O investimento adicional necess\u00e1rio para escrever testes compensa na forma de significativamente menos relat\u00f3rios de bugs e menos tempo gasto corrigindo-os. Al\u00e9m disso, com testes automatizados de software, as extens\u00f5es e modifica\u00e7\u00f5es podem ser feitas mais rapidamente, pois os testes podem confirmar rapidamente se a funcionalidade existente continua funcionando.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-\">\n        <p><strong>Dica da especialista Juliette<\/strong><\/p>\n<p>Quando voc\u00ea quiser come\u00e7ar a escrever um novo c\u00f3digo:<\/p>\n<ol>\n<li>Comece escrevendo o que uma fun\u00e7\u00e3o deve fazer e com que l\u00f3gica. Escreva isso como um coment\u00e1rio ou s\u00e9rie de coment\u00e1rios.<\/li>\n<li>Escreva os testes. Tente ter tamb\u00e9m em mente os casos de ponta.<\/li>\n<li>S\u00f3 ent\u00e3o escreva o c\u00f3digo.<\/li>\n<\/ol>\n<p>Da l\u00f3gica original que voc\u00ea descreveu nos coment\u00e1rios, metade dela ter\u00e1 desaparecido porque foi substitu\u00edda pelo c\u00f3digo. Apenas deixe o resto dos coment\u00e1rios, pois eles podem ajud\u00e1-lo a entender a l\u00f3gica novamente mais tarde se voc\u00ea n\u00e3o olhar para o seu c\u00f3digo por um tempo<\/p>\n<\/aside>\n\n\n<h2>O papel dos servidores WordPress e o PHP 8.x<\/h2>\n<p>Para o propriet\u00e1rio m\u00e9dio de um site, a orienta\u00e7\u00e3o do seu servidor \u00e9 altamente desej\u00e1vel. Considere o seguinte:<\/p>\n<ul>\n<li>Documenta\u00e7\u00e3o e atualiza\u00e7\u00f5es para informar aos clientes que o WordPress Core, plugins e\/ou temas podem n\u00e3o ser totalmente compat\u00edveis com todas as vers\u00f5es do PHP.<\/li>\n<li>Op\u00e7\u00f5es para testes (tais como <a href=\"https:\/\/kinsta.com\/pt\/hospedagem-wordpress\/ambientes-de-teste\/\">trabalhar com um ambiente de teste<\/a>)<\/li>\n<li>M\u00e9todos para relat\u00f3rio de erros e contato com o suporte<\/li>\n<\/ul>\n<p>Isso tamb\u00e9m beneficia o servidor web, pois os propriet\u00e1rios de sites geralmente entram em contato com o suporte do servidor em busca de ajuda quando surgem problemas. No caso de uma mudan\u00e7a para o PHP 8.0, 8.1 ou 8.2, o propriet\u00e1rio do site \u00e9 respons\u00e1vel por eventuais problemas, e quanto mais informa\u00e7\u00f5es o propriet\u00e1rio tiver para se preparar adequadamente para a mudan\u00e7a, melhor.<\/p>\n<p>Disponibilizar o PHP 8.1 ou 8.2 para os clientes como um servidor web \u00e9 uma coisa, mas ao fazer isso, eles devem se certificar de criar consci\u00eancia entre os clientes para que estejam cientes de que podem surgir problemas. \u00c9 recomend\u00e1vel testar o site em um ambiente de teste com uma vers\u00e3o diferente da que est\u00e1 em produ\u00e7\u00e3o (ambiente &#8220;live&#8221;). (A sele\u00e7\u00e3o de vers\u00f5es do PHP est\u00e1 dispon\u00edvel por padr\u00e3o na Kinsta, por exemplo.)<\/p>\n<p>Tornar o PHP 8.1 ou 8.2 dispon\u00edvel para os clientes como um provedor de hospedagem \u00e9 uma coisa, mas ao fazer isso, eles devem certificar-se de criar consci\u00eancia entre os clientes para que eles estejam cientes de que os problemas podem vir \u00e0 tona. \u00c9 recomendado testar seu site em um ambiente de teste com uma vers\u00e3o diferente da produ\u00e7\u00e3o. (A sele\u00e7\u00e3o de vers\u00f5es PHP est\u00e1 <a href=\"https:\/\/kinsta.com\/pt\/changelog\/php-8\/\">dispon\u00edvel por padr\u00e3o na Kinsta<\/a>)<\/p>\n<h2>Vers\u00e3o m\u00ednima do PHP para WordPress<\/h2>\n<p>Atualmente, mais de 15% de todos os sites utilizam a vers\u00e3o 7.0 ou anterior do PHP. Isso pode ser verificado nas <a href=\"https:\/\/wordpress.org\/about\/stats\/\">estat\u00edsticas oficiais do WordPress<\/a>. Cerca de 83% de todos os sites WordPress usam a vers\u00e3o 7.4 ou anterior. \u00c9 importante observar que qualquer vers\u00e3o igual ou inferior \u00e0 8.0 <a href=\"https:\/\/www.php.net\/supported-versions\">n\u00e3o \u00e9 mais suportada pelo PHP<\/a>. Utilizar vers\u00f5es obsoletas do PHP pode resultar em problemas, pois as atualiza\u00e7\u00f5es de seguran\u00e7a n\u00e3o s\u00e3o mais lan\u00e7adas.<\/p>\n<p>Para evitar problemas, \u00e9 importante que os propriet\u00e1rios de sites WordPress estejam cientes e informados sobre a vers\u00e3o m\u00ednima em PHP que permitir\u00e1 que seu site funcione com seguran\u00e7a. Por sua vez, os propriet\u00e1rios do site podem modificar a vers\u00e3o PHP eles mesmos (<a href=\"https:\/\/kinsta.com\/pt\/blog\/como-atualizar-o-php-no-wordpress\/\">poss\u00edvel na Kinsta para todos os pacotes<\/a>) ou pedir ao seu provedor de hospedagem para atualizar o site para uma vers\u00e3o mais recente do PHP. Em casos extremos, voc\u00ea pode mudar para um provedor de hospedagem de sites que suporte estas vers\u00f5es mais recentes.<\/p>\n<p>Como o WordPress exige apenas a <a href=\"https:\/\/wordpress.org\/about\/requirements\/\">vers\u00e3o m\u00ednima de 7.4<\/a>, muitos servidores e propriet\u00e1rios de sites n\u00e3o t\u00eam motiva\u00e7\u00e3o suficiente para atualizar seus sites. Isso acontece apesar do fato de que o PHP 7.4 alcan\u00e7ou o fim da sua vida \u00fatil em <a href=\"https:\/\/www.php.net\/eol.php\">novembro de 2022<\/a>.<\/p>\n<p>Se o WordPress aumentar a vers\u00e3o m\u00ednima do PHP, isso pode significar que muitos sites n\u00e3o ser\u00e3o mais compat\u00edveis com uma atualiza\u00e7\u00e3o para a vers\u00e3o mais recente do WordPress. No entanto, as atualiza\u00e7\u00f5es de seguran\u00e7a continuar\u00e3o sendo lan\u00e7adas para essas vers\u00f5es obsoletas por um bom tempo.<\/p>\n<h2>Resumo<\/h2>\n<p>Para atualizar seu site para PHP 8.0 ou superior, h\u00e1 v\u00e1rias etapas que voc\u00ea ou seu desenvolvedor devem seguir. Etapas importantes incluem:<\/p>\n<ul>\n<li>An\u00e1lise est\u00e1tica<\/li>\n<li>Testes unit\u00e1rios<\/li>\n<li>Teste de integra\u00e7\u00e3o<\/li>\n<li>Testes manuais<\/li>\n<\/ul>\n<p>Ao mudar para o PHP 8.x, certifique-se de que <em>tudo<\/em> tenha sido devidamente testado. Esta \u00e9 a \u00fanica maneira de garantir que seu site ir\u00e1 funcionar corretamente, de forma r\u00e1pida e segura, na vers\u00e3o mais recente do PHP.<\/p>\n<p>N\u00f3s agradecemos imensamente a Juliette por participar deste artigo e por todo o seu trabalho nas ferramentas mencionadas!<\/p>\n<p><em>Foto de Juliette, tirada por Jip Moors e usada com permiss\u00e3o.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Atualizar um site, plugin ou tema do WordPress para uma nova vers\u00e3o do PHP \u00e9 uma tarefa que ocorre regularmente. Mas como fazer isso de forma &#8230;<\/p>\n","protected":false},"author":139,"featured_media":57733,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[985,998],"class_list":["post-57732","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-aprenda-php","topic-atualizacoes-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Migrando para PHP 8.x em Quatro Passos - Uma Entrevista com Juliette Reinders Folmer - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrando para PHP 8.x em Quatro Passos - Uma Entrevista com Juliette Reinders Folmer\" \/>\n<meta property=\"og:description\" content=\"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-07T10:41:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-22T06:41:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Marcel Bootsman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcel Bootsman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/\"},\"author\":{\"name\":\"Marcel Bootsman\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7\"},\"headline\":\"Migrando para PHP 8.x em Quatro Passos &#8211; Uma Entrevista com Juliette Reinders Folmer\",\"datePublished\":\"2023-03-07T10:41:20+00:00\",\"dateModified\":\"2023-08-22T06:41:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/\"},\"wordCount\":4442,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/\",\"name\":\"Migrando para PHP 8.x em Quatro Passos - Uma Entrevista com Juliette Reinders Folmer - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"datePublished\":\"2023-03-07T10:41:20+00:00\",\"dateModified\":\"2023-08-22T06:41:20+00:00\",\"description\":\"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aprenda PHP\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/aprenda-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Migrando para PHP 8.x em Quatro Passos &#8211; Uma Entrevista com Juliette Reinders Folmer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7\",\"name\":\"Marcel Bootsman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g\",\"caption\":\"Marcel Bootsman\"},\"description\":\"Partnerships &amp; Community Manager EMEA. Je kan me bereiken via Linkedin.\",\"sameAs\":[\"https:\/\/kinsta.com\/nl\/\",\"https:\/\/www.linkedin.com\/in\/marcelbootsman\/\"],\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/marcelbootsman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrando para PHP 8.x em Quatro Passos - Uma Entrevista com Juliette Reinders Folmer - Kinsta\u00ae","description":"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/","og_locale":"pt_PT","og_type":"article","og_title":"Migrando para PHP 8.x em Quatro Passos - Uma Entrevista com Juliette Reinders Folmer","og_description":"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.","og_url":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2023-03-07T10:41:20+00:00","article_modified_time":"2023-08-22T06:41:20+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png","type":"image\/png"}],"author":"Marcel Bootsman","twitter_card":"summary_large_image","twitter_description":"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Marcel Bootsman","Tempo estimado de leitura":"19 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/"},"author":{"name":"Marcel Bootsman","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7"},"headline":"Migrando para PHP 8.x em Quatro Passos &#8211; Uma Entrevista com Juliette Reinders Folmer","datePublished":"2023-03-07T10:41:20+00:00","dateModified":"2023-08-22T06:41:20+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/"},"wordCount":4442,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/","url":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/","name":"Migrando para PHP 8.x em Quatro Passos - Uma Entrevista com Juliette Reinders Folmer - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png","datePublished":"2023-03-07T10:41:20+00:00","dateModified":"2023-08-22T06:41:20+00:00","description":"Aprenda o que est\u00e1 envolvido em uma transi\u00e7\u00e3o tranquila para o PHP 8.x em seu site WordPress, plugin ou tema, incluindo um guia completo.","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/03\/Juliette_Reinders_Folmer_image.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/migrando-para-php-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Aprenda PHP","item":"https:\/\/kinsta.com\/pt\/topicos\/aprenda-php\/"},{"@type":"ListItem","position":3,"name":"Migrando para PHP 8.x em Quatro Passos &#8211; Uma Entrevista com Juliette Reinders Folmer"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/d8f086a7911078001ff0e6c05d42b5c7","name":"Marcel Bootsman","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1bf6543c8d557c182b40836c561bf0cd?s=96&d=mm&r=g","caption":"Marcel Bootsman"},"description":"Partnerships &amp; Community Manager EMEA. Je kan me bereiken via Linkedin.","sameAs":["https:\/\/kinsta.com\/nl\/","https:\/\/www.linkedin.com\/in\/marcelbootsman\/"],"url":"https:\/\/kinsta.com\/pt\/blog\/author\/marcelbootsman\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/57732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/139"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=57732"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/57732\/revisions"}],"predecessor-version":[{"id":61757,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/57732\/revisions\/61757"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/en"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/nl"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/translations\/dk"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57732\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/57733"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=57732"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=57732"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=57732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}