{"id":51398,"date":"2022-10-13T07:00:48","date_gmt":"2022-10-13T14:00:48","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=51398"},"modified":"2025-05-26T12:59:28","modified_gmt":"2025-05-26T19:59:28","slug":"php-82","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/","title":{"rendered":"PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado)"},"content":{"rendered":"\n<p>Espera-se que o PHP 8.2 seja lan\u00e7ado em novembro deste ano, com a vers\u00e3o est\u00e1vel mais recente sendo o PHP 8.1.5. Embora ainda esteja no in\u00edcio do processo, houve uma recep\u00e7\u00e3o mista em rela\u00e7\u00e3o ao PHP 8.2 e \u00e0 compatibilidade do n\u00facleo do WordPress, plugin e tema.<\/p>\n\n\n\n<p>Contudo, saber o que esperar pode ajud\u00e1-lo a <a href=\"https:\/\/www.dreamhost.com\/blog\/pt\/atualizar-php\/\" target=\"blank&quot;\" rel=\"noopener\">preparar-se para a \u00faltima vers\u00e3o do PHP<\/a>. Ao aprender sobre as novas funcionalidades e as que est\u00e3o sendo descontinuadas, voc\u00ea pode entender como a atualiza\u00e7\u00e3o pode afetar o desenvolvimento. Esse conhecimento tamb\u00e9m pode ajud\u00e1-lo a se preparar para o lan\u00e7amento eventual.<\/p>\n\n\n\n<p>Neste post, vamos recapitular as vers\u00f5es mais recentes do PHP. Em seguida, abordaremos as novidades do PHP 8.2 e discutiremos o cronograma de lan\u00e7amento. Vamos l\u00e1!<\/p>\n\n\n\n<h2 id=\"h-an-overview-of-php-versions\" class=\"wp-block-heading\"><b>Vis\u00e3o Geral das Vers\u00f5es do PHP<\/b><\/h2>\n\n\n\n<p><a href=\"https:\/\/help.dreamhost.com\/hc\/en-us\/articles\/214202188-PHP-overview\" target=\"blank&quot;\" rel=\"noopener\">PHP<\/a> \u00e9 a linguagem de programa\u00e7\u00e3o principal do WordPress. Desempenha um papel vital na convers\u00e3o de dados do seu banco de dados em p\u00e1ginas web HTML para os visitantes do seu site.<\/p>\n\n\n\n<p>Como propriet\u00e1rio ou desenvolvedor de sites, voc\u00ea provavelmente j\u00e1 est\u00e1 familiarizado com a import\u00e2ncia de manter o n\u00facleo do WordPress, temas e plugins atualizados. No entanto, tamb\u00e9m \u00e9 essencial manter seu PHP atualizado.<\/p>\n\n\n\n<p><style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }<\/style><\/p>\n\n\n\n<div class=\"embed-container\"><iframe data-src=\"https:\/\/www.youtube.com\/embed\/G_O-mxZAk-g\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/div>\n\n\n\n<p>Atualmente, o WordPress recomenda o uso de pelo menos <a href=\"https:\/\/wordpress.org\/about\/requirements\/\" target=\"blank&quot;\" rel=\"noopener\">PHP 7.4<\/a>. Vers\u00f5es mais antigas de PHP n\u00e3o recebem mais suporte ativo para atualiza\u00e7\u00f5es de seguran\u00e7a e corre\u00e7\u00f5es de bugs. Portanto, atualizar para a vers\u00e3o <i>est\u00e1vel<\/i> mais recente do PHP pode resultar em melhor seguran\u00e7a do site, desempenho aprimorado e n\u00edveis mais altos de suporte (enfatizamos <i>est\u00e1vel<\/i> porque uma parte dos mais de 60.000 Plugins\/plugin do WordPress ainda n\u00e3o \u00e9 totalmente compat\u00edvel com o PHP 8.0, ent\u00e3o \u00e9 uma boa ideia abordar essas atualiza\u00e7\u00f5es com alguma cautela).<\/p>\n\n\n\n<p>PHP 7.4 introduziu propriedades tipadas, um separador num\u00e9rico sublinhado e v\u00e1rias melhorias. Desde ent\u00e3o, houve mais algumas <a href=\"https:\/\/php.watch\/versions\" target=\"blank&quot;\" rel=\"noopener\">itera\u00e7\u00f5es do PHP<\/a> lan\u00e7adas.<\/p>\n\n\n\n<p>PHP 8.0, lan\u00e7ado em novembro de 2020, trouxe uma s\u00e9rie de funcionalidades essenciais. Al\u00e9m de melhorias na sintaxe e performance, o lan\u00e7amento incluiu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Par\u00e2metros nomeados<\/li>\n\n\n\n<li>Sintaxe de correspond\u00eancia<\/li>\n\n\n\n<li>Tipos de uni\u00e3o<\/li>\n\n\n\n<li>Promo\u00e7\u00e3o de Propriedade de Construtor<\/li>\n\n\n\n<li>JIT (que afeta como o PHP executa o c\u00f3digo fonte)<\/li>\n\n\n<\/ul>\n\n\n\n<p>Um ano depois veio o PHP 8.1, a \u00faltima vers\u00e3o principal do PHP. Esta atualiza\u00e7\u00e3o inclui funcionalidades significativas, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tipos de interse\u00e7\u00e3o<\/li>\n\n\n\n<li>Propriedades somente leitura<\/li>\n\n\n\n<li>Enums<\/li>\n\n\n\n<li>Fibras<\/li>\n\n\n\n<li>Tipo de retorno never<\/li>\n\n\n<\/ul>\n\n\n\n<p>Manter-se atualizado com as \u00faltimas vers\u00f5es do PHP pode ajudar a aumentar a performance e a seguran\u00e7a do seu site. No entanto, \u00e9 importante saber quais altera\u00e7\u00f5es esperar antes de fazer o upgrade. Se voc\u00ea estiver interessado em testar o estado atual do PHP 8.2, pode faz\u00ea-lo via <a href=\"https:\/\/github.com\/devilbox\/docker-php-fpm-8.2\" target=\"blank&quot;\" rel=\"noopener\">GitHub<\/a>.<\/p>\n\n\n\n<h2 id=\"h-what-s-new-in-php-8-2\" class=\"wp-block-heading\"><b>Novidades no PHP 8.2<\/b><\/h2>\n\n\n\n<p>PHP 8.2 deve ser lan\u00e7ado at\u00e9 o final de 2022. Aqui est\u00e1 o <a href=\"https:\/\/wiki.php.net\/todo\/php82\" target=\"blank&quot;\" rel=\"noopener\">cronograma de lan\u00e7amento atual<\/a>, com Disponibilidade Geral (GA) programada para 24 de novembro de 2022:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>9 de junho: Alpha 1<\/li>\n\n\n\n<li>23 de junho: Alpha 2<\/li>\n\n\n\n<li>7 de julho: Alpha 3<\/li>\n\n\n\n<li>19 de julho: Congelamento de funcionalidades<\/li>\n\n\n\n<li>21 de julho: Beta 1<\/li>\n\n\n\n<li>4 de agosto: Beta 2<\/li>\n\n\n\n<li>18 de agosto: Beta 3<\/li>\n\n\n\n<li>1 de setembro: Candidato a lan\u00e7amento 1<\/li>\n\n\n\n<li>15 de setembro: Candidato a lan\u00e7amento 2<\/li>\n\n\n\n<li>29 de setembro: Candidato a lan\u00e7amento 3<\/li>\n\n\n\n<li>13 de outubro: Candidato a lan\u00e7amento 4<\/li>\n\n\n\n<li>27 de outubro: Candidato a lan\u00e7amento 5<\/li>\n\n\n\n<li>10 de novembro: Candidato a lan\u00e7amento 6<\/li>\n\n\n\n<li>24 de novembro: Disponibilidade Geral<\/li>\n\n\n<\/ul>\n\n\n\n<p>De acordo com a documenta\u00e7\u00e3o oficial no <a href=\"https:\/\/php.watch\/versions\/8.2\" target=\"_blank\" rel=\"noopener\">site do PHP<\/a>, dever\u00e1 haver v\u00e1rias novas funcionalidades e fun\u00e7\u00f5es obsoletas. Vamos dar uma olhada em algumas delas!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-disjunctive-normal-form-dnf-types\"><b>Tipos de Forma Normal Disjuntiva (DNF)<\/b><\/h3>\n\n\n\n<p>PHP 8.2 ir\u00e1 <a href=\"https:\/\/wiki.php.net\/rfc\/dnf_types\" target=\"blank&quot;\" rel=\"noopener\">introduzir<\/a> uma nova funcionalidade de tipos em <a href=\"https:\/\/en.wikipedia.org\/wiki\/Disjunctive_normal_form\" target=\"blank&quot;\" rel=\"noopener\">Forma Normal Disjuntiva (DNF)<\/a>. DNF \u00e9 uma maneira padronizada de organizar express\u00f5es booleanas \u2014 especificamente, em uma s\u00e9rie de ANDs ORed. Quando o DNF \u00e9 aplicado a declara\u00e7\u00f5es de tipo, ele possibilita uma maneira padr\u00e3o de escrever tipos de Uni\u00e3o e Intersec\u00e7\u00e3o combinados que o analisador pode manipular.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-new-mysqli-execute-query-function-and-mysqli-execute-query-method\"><b>Nova Fun\u00e7\u00e3o mysqli_execute_query e M\u00e9todo mysqli::execute_query<\/b><\/h3>\n\n\n\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/mysqli_execute_query\" target=\"blank&quot;\" rel=\"noopener\">Executar consultas MySQLi parametrizadas<\/a> ser\u00e1 mais f\u00e1cil no PHP 8.2, gra\u00e7as \u00e0 nova fun\u00e7\u00e3o <span style=\"font-family: 'courier new', courier, monospace;\">mysqli_execute_query($sql, $params)<\/span> e ao m\u00e9todo <span style=\"font-family: 'courier new', courier, monospace;\">mysqli::execute_query<\/span>.<\/p>\n\n\n\n<p>Isso reduzir\u00e1 ainda mais a complexidade do uso de consultas parametrizadas, o que facilitar\u00e1 para os desenvolvedores se afastarem de <span style=\"font-family: 'courier new', courier, monospace;\">mysqli_query()<\/span> assim como da perigosa\/arriscada fuga de valores de usu\u00e1rio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-fetch-enum-properties-in-const-expressions\"><b>Buscar propriedades de enum em express\u00f5es const<\/b><\/h3>\n\n\n\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/fetch_property_in_const_expressions\" target=\"blank&quot;\" rel=\"noopener\">De acordo com a RFC<\/a>, \u201cEsta RFC prop\u00f5e permitir o uso de <span style=\"font-family: 'courier new', courier, monospace;\">-&gt;\/?-&gt;<\/span> para buscar propriedades de enums em express\u00f5es constantes. A motiva\u00e7\u00e3o principal para esta mudan\u00e7a \u00e9 permitir a busca das propriedades de nome e valor em locais onde objetos enum n\u00e3o s\u00e3o permitidos, como chaves de array.\u201d<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-new-random-extension\"><b>Nova Extens\u00e3o Aleat\u00f3ria<\/b><\/h3>\n\n\n\n<p>PHP 8.2 introduz uma nova extens\u00e3o PHP chamada <span style=\"font-family: 'courier new', courier, monospace;\">random<\/span>. Ela organiza e consolida a funcionalidade existente do PHP relacionada \u00e0 gera\u00e7\u00e3o de n\u00fameros aleat\u00f3rios. Tamb\u00e9m introduz uma s\u00e9rie de estruturas de classes PHP e classes de exce\u00e7\u00e3o para fornecer op\u00e7\u00f5es granulares para geradores de n\u00fameros aleat\u00f3rios e tratamento de exce\u00e7\u00f5es.<\/p>\n\n\n\n<p>A extens\u00e3o <span style=\"font-family: 'courier new', courier, monospace;\">random<\/span> \u00e9 fornecida com o PHP, e n\u00e3o h\u00e1 op\u00e7\u00e3o de configura\u00e7\u00e3o em tempo de compila\u00e7\u00e3o ou execu\u00e7\u00e3o para desativar a extens\u00e3o <span style=\"font-family: 'courier new', courier, monospace;\">random<\/span>. A extens\u00e3o <span style=\"font-family: 'courier new', courier, monospace;\">random<\/span> estar\u00e1 sempre dispon\u00edvel no PHP 8.2 e posteriores.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-new-curl-upkeep-function\"><b>Nova Fun\u00e7\u00e3o curl_upkeep<\/b><\/h3>\n\n\n\n<p>PHP 8.2 adiciona <a href=\"https:\/\/php.watch\/versions\/8.2\/curl_upkeep\" target=\"blank&quot;\" rel=\"noopener\">uma nova fun\u00e7\u00e3o<\/a> \u00e0 extens\u00e3o Curl chamada <span style=\"font-family: 'courier new', courier, monospace;\">curl_upkeep<\/span>. A fun\u00e7\u00e3o curl_upkeep chama <span style=\"font-family: 'courier new', courier, monospace;\">curl_easy_upkeep()<\/span> no libcurl, que \u00e9 a biblioteca C subjacente que a extens\u00e3o PHP Curl utiliza.<\/p>\n\n\n\n<p>A fun\u00e7\u00e3o <span style=\"font-family: 'courier new', courier, monospace;\">curl_upkeep()<\/span> faz o trabalho que mant\u00e9m uma conex\u00e3o Curl viva. No entanto, nem todos os tipos de conex\u00e3o que o Curl integra suportam a manuten\u00e7\u00e3o da conex\u00e3o. Atualmente, apenas as conex\u00f5es HTTP\/2 a suportam.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-new-ini-parse-quantity-function\"><b>Nova fun\u00e7\u00e3o ini_parse_quantity<\/b><\/h3>\n\n\n\n<p><a href=\"https:\/\/php.watch\/versions\/8.2\/ini_parse_quantity\" target=\"blank&quot;\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">ini_parse_quantity<\/span><\/a> \u00e9 uma nova fun\u00e7\u00e3o que ser\u00e1 adicionada ao PHP na vers\u00e3o 8.2. Ela analisa qualquer tamanho de dados reconhecido pelos valores INI do PHP (como 56K, 256M ou 1G), e ent\u00e3o retorna o tamanho dos dados em bytes. Pode ser \u00fatil ao analisar valores INI existentes ou fornecidos em uma aplica\u00e7\u00e3o PHP. No entanto, ela n\u00e3o reconhece sufixos IEC para tamanhos de dados como MB, MiB ou GB, e n\u00e3o \u00e9 adequada para converter valores de tamanho de dados padr\u00e3o para bytes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-new-memory-reset-peak-usage-function\"><b>Nova fun\u00e7\u00e3o memory_reset_peak_usage<\/b><\/h3>\n\n\n\n<p>PHP 8.2 incluir\u00e1 uma nova fun\u00e7\u00e3o chamada <a href=\"https:\/\/php.watch\/versions\/8.2\/memory_reset_peak_usage\" target=\"blank&quot;\" rel=\"noopener\"><span style=\"font-family: 'courier new', courier, monospace;\">memory_reset_peak_usage<\/span><\/a>. Ela ir\u00e1 reiniciar o uso m\u00e1ximo de mem\u00f3ria retornado pela fun\u00e7\u00e3o <span style=\"font-family: 'courier new', courier, monospace;\">memory_get_peak_usage<\/span>.<\/p>\n\n\n\n<p>Esta fun\u00e7\u00e3o ser\u00e1 \u00fatil para casos que envolvem invocar uma a\u00e7\u00e3o v\u00e1rias vezes e registrar o uso m\u00e1ximo de mem\u00f3ria de cada itera\u00e7\u00e3o. Os desenvolvedores poder\u00e3o usar este novo recurso para redefinir o uso m\u00e1ximo de mem\u00f3ria em qualquer ponto durante a vida \u00fatil da solicita\u00e7\u00e3o.<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-readonly-classes\"><b>Classes Somente Leitura<\/b><\/h3>\n\n\n\n<p>Introduzidas no PHP 8.1, as propriedades readonly ser\u00e3o expandidas no PHP 8.2 para adicionar a\u00e7\u00facar sint\u00e1tico de modo que todas as propriedades de classe sejam readonly de uma s\u00f3 vez:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">readonly class Post\n{\npublic function __construct(\npublic string $title,\npublic Author $author,\npublic string $body,\npublic DateTime $publishedAt,\n) {}\n}<\/pre>\n\n\n\n<p>Isso impedir\u00e1 que propriedades din\u00e2micas sejam adicionadas \u00e0s classes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-null-true-and-false-standalone-types\"><b>Tipos Aut\u00f4nomos Null, True e False<\/b><\/h3>\n\n\n\n<p>No PHP 8.2, o tipo de retorno false estar\u00e1 dispon\u00edvel como um tipo isolado em vez de estritamente um tipo de uni\u00e3o para quando ocorrer um erro, o que j\u00e1 \u00e9 poss\u00edvel:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">function alwaysFalse(): false\n{\nreturn false;\n}<\/pre>\n\n\n\n<p>O mesmo se aplica ao tipo nulo. Por exemplo, como um tipo independente, ao contr\u00e1rio de antes, NullPost::getAuthor() ser\u00e1 capaz de retornar apenas null.<\/p>\n\n\n\n<p>PHP 8.2 tamb\u00e9m <a href=\"https:\/\/php.watch\/versions\/8.2\/true-type\" target=\"blank&quot;\" rel=\"noopener\">permite true<\/a> como um tipo aut\u00f4nomo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-deprecate-dynamic-properties\"><b>Descontinuar Propriedades Din\u00e2micas<\/b><\/h3>\n\n\n\n<p><a href=\"https:\/\/php.watch\/versions\/8.2\/dynamic-properties-deprecated\" target=\"blank&quot;\" rel=\"noopener\">Propriedades din\u00e2micas<\/a> ser\u00e3o depreciadas no PHP 8.2, resultando em uma ErrorException pelo PHP 9.0. Essas propriedades s\u00e3o definidas em um objeto:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">class Post\n{\npublic string $title;\n}\n\n\/\/ \u2026\n\n$post-&gt;name = 'Nome';<\/pre>\n\n\n\n<p>As propriedades din\u00e2micas permitem flexibilidade ao criar classes (por exemplo, objetos de valor) sem uma declara\u00e7\u00e3o de classe estrita. Sua deprecia\u00e7\u00e3o provavelmente ser\u00e1 um problema para desenvolvedores que dependem de propriedades din\u00e2micas porque os empurrar\u00e1 mais para a an\u00e1lise est\u00e1tica. Por essa raz\u00e3o, alguns desenvolvedores est\u00e3o apreensivos com essa mudan\u00e7a no PHP 8.2.<\/p>\n\n\n\n<p>Entretanto, classes que usam __get e __set ainda suportar\u00e3o propriedades din\u00e2micas, assim como objetos do stdClass.<\/p>\n\n\n\n<p>Alternativamente, os desenvolvedores podem usar o novo <a href=\"https:\/\/php.watch\/versions\/8.2\/AllowDynamicProperties\" target=\"blank&quot;\" rel=\"noopener\">#[AllowDynamicProperties]attribute<\/a>, declarado no namespace global, em classes para essas propriedades:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#[AllowDynamicProperties]\nclass User() {}\n$user = new User();\n$user-&gt;foo = 'bar';<\/pre>\n\n\n\n<p>Embora n\u00e3o seja recomendado, outra op\u00e7\u00e3o \u00e9 desativar os avisos de deprecia\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-new-n-modifier\"><b>Novo Modificador \/n<\/b><\/h3>\n\n\n\n<p>PHP 8.2 incluir\u00e1 suporte para o <a href=\"https:\/\/php.watch\/versions\/8.2\/preg-n-no-capture-modifier\" target=\"blank&quot;\" rel=\"noopener\">modificador \/n (sem captura)<\/a> para a fam\u00edlia de fun\u00e7\u00f5es preg_*. Quando utilizado, quaisquer grupos com meta-caracteres () n\u00e3o capturar\u00e3o, exceto pelos grupos capturados que s\u00e3o nomeados. Essencialmente, o resultado \u00e9 o mesmo que marcar cada grupo como n\u00e3o capturador.<\/p>\n\n\n\n<p>A raz\u00e3o por tr\u00e1s dessa mudan\u00e7a \u00e9 que o modificador simplifica express\u00f5es regulares complexas para m\u00faltiplos grupos. Em vez de marcar cada grupo como n\u00e3o capturador, os desenvolvedores podem marcar todos os grupos como n\u00e3o capturadores. Em seguida, eles podem selecionar e nomear grupos espec\u00edficos que precisam capturar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-redact-parameters-in-back-traces\"><b>Redigir Par\u00e2metros em Rastreamentos<\/b><\/h3>\n\n\n\n<p>Muitos desenvolvedores usam servi\u00e7os que rastreiam pilhas de chamadas e erros de produ\u00e7\u00e3o em bases de c\u00f3digo. Esses servi\u00e7os podem notificar os usu\u00e1rios se e quando algo der errado. Por exemplo, rastrear pilhas de chamadas \u00e9 \u00fatil ao depurar uma aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Entretanto, \u00e0s vezes os rastreamentos de pilha podem conter informa\u00e7\u00f5es sens\u00edveis, como nomes de usu\u00e1rio e senhas. O PHP 8.2 incluir\u00e1 um atributo <a href=\"https:\/\/php.watch\/versions\/8.2\/backtrace-parameter-redaction\" target=\"blank&quot;\" rel=\"noopener\">#[SensitiveParameter]<\/a> que impedir\u00e1 que essas informa\u00e7\u00f5es sejam inclu\u00eddas nos rastreamentos de pilha quando ocorrerem problemas:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">function test(\n$foo,\n#[SensitiveParameter] $bar,\n$baz\n) {\nthrow new Exception('Erro');\n}\n\ntest('foo', 'bar', 'baz');<\/pre>\n\n\n\n<p>O PHP 8.2 usar\u00e1 os par\u00e2metros sens\u00edveis para redigir informa\u00e7\u00f5es privadas das rastreamentos de pilha, tornando-os mais seguros. Esses par\u00e2metros garantem que os dados n\u00e3o acabem em registros de erros. Observe que esse atributo s\u00f3 estar\u00e1 dispon\u00edvel para uso em par\u00e2metros.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-deprecate-string-interpolation\"><b>Descontinuar a Interpola\u00e7\u00e3o de String ${}<\/b><\/h3>\n\n\n\n<p>Existem v\u00e1rias maneiras de incorporar vari\u00e1veis em strings com PHP. No entanto, o PHP 8.2 ir\u00e1 descontinuar dois m\u00e9todos. O primeiro \u00e9 usando ${} em strings:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"Ol\u00e1 ${world}\";<\/pre>\n\n\n\n<p>O segundo \u00e9 usando ${} (vari\u00e1veis vari\u00e1veis):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"Ol\u00e1 ${(world)}\";<\/pre>\n\n\n\n<p>Isso provavelmente n\u00e3o ser\u00e1 um problema significativo para os desenvolvedores, pois os dois m\u00e9todos de interpola\u00e7\u00e3o de strings mais populares ainda funcionar\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-deprecate-partially-supported-callables\"><b>Descontinuar Callables Parcialmente Suportados<\/b><\/h3>\n\n\n\n<p>Outra mudan\u00e7a obsoleta ser\u00e1 com <a href=\"https:\/\/php.watch\/versions\/8.2\/partially-supported-callable-deprecation\" target=\"blank&quot;\" rel=\"noopener\">callables parcialmente suportados<\/a>. H\u00e1 v\u00e1rias maneiras de criar um callable em PHP. Ele pode ser chamado com ou sem par\u00e2metros com a sintaxe $callable(), o user_call_func(\/a_array), ou usando uma fun\u00e7\u00e3o com um callback.<\/p>\n\n\n\n<p>Os padr\u00f5es de chamadas obsoletos incluem o seguinte:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$callable = \"self::method\";\n$callable = \"parent::method\";\n$callable = \"static::method\";\n$callable = [\"self\", \"method\"];\n$callable = [\"parent\", \"method\"];\n$callable = [\"static\", \"method\"];\n$callable = [\"MyClass\", \"MyParentClass::myMethod\"];\n$callable = [new MyClass(), \"MyOtherClass::myMethod\"];<\/pre>\n\n\n\n<p>A partir do PHP 8.2, chamar qualquer um dos itens acima resultar\u00e1 no seguinte aviso de descontinua\u00e7\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">class Test {\npublic static function myMethod(): void {\necho \"Called\";\n}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">public static function call(): void {\n$callable = 'self::myMethod';\ncall_user_func($callable);\n}\n}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">$callable = Test::call();\n\/\/ \"Chamado\";<\/pre>\n\n\n\n<p>No entanto, passar esses callables para a fun\u00e7\u00e3o <span style=\"font-family: 'courier new', courier, monospace;\">is_callable<\/span> ou us\u00e1-los com os tipos de par\u00e2metro callable n\u00e3o gerar\u00e1 a mensagem de deprecia\u00e7\u00e3o. Para evitar o aviso de deprecia\u00e7\u00e3o, os desenvolvedores podem, em vez disso, converter as palavras-chave parent, self e static em c\u00f3digo callable para os respectivos nomes de classe usando o m\u00e9todo m\u00e1gico::class.<\/p>\n\n\n\n<p>Parte da raz\u00e3o por tr\u00e1s da mudan\u00e7a \u00e9 permitir que cham\u00e1veis sejam usados para propriedades tipadas. Isso as torna menos dependentes de contexto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-mysqli-can-no-longer-be-compiled-with-libmysql\"><b>MySQLi n\u00e3o pode mais ser compilado com libmysql<\/b><\/h3>\n\n\n\n<p>No passado, o PHP suportou duas bibliotecas para conectar a bases de dados MySQL: mysqlnd e libmysql. A partir do PHP 5.4, a primeira tem sido a biblioteca padr\u00e3o. No entanto, tem sido poss\u00edvel compilar o MySQLi atrav\u00e9s de extens\u00f5es.<\/p>\n\n\n\n<p>A partir do PHP 8.2, compilar uma extens\u00e3o MySQLi com <a href=\"https:\/\/php.watch\/versions\/8.2\/mysqli-libmysql-no-longer-supported\" target=\"blank&quot;\" rel=\"noopener\">libmysql n\u00e3o ser\u00e1 suportado<\/a>. Tentar faz\u00ea-lo resultar\u00e1 em um erro de configura\u00e7\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">.\/configure --with-mysqli=FOO<\/pre>\n\n\n\n<p>A vincula\u00e7\u00e3o do mysqli com bibliotecas externas n\u00e3o \u00e9 mais suportada<\/p>\n\n\n\n<p>Isso provavelmente n\u00e3o causar\u00e1 erros significativos para desenvolvedores. No entanto, os dois maiores recursos suportados pelo libmysql que n\u00e3o est\u00e3o dispon\u00edveis com mysqlnd s\u00e3o suportados para reconex\u00e3o autom\u00e1tica e autentica\u00e7\u00e3o atrav\u00e9s de LDAP e SASL.<\/p>\n\n\n\n<h2 id=\"h-keep-your-wordpress-php-version-up-to-date\" class=\"wp-block-heading\"><b>Mantenha Sua Vers\u00e3o PHP do WordPress Atualizada<\/b><\/h2>\n\n\n\n<p>Como desenvolvedor, \u00e9 essencial testar seu c\u00f3digo com as vers\u00f5es futuras do PHP. Neste caso, os desenvolvedores devem come\u00e7ar a testar seu c\u00f3digo com o PHP 8.2 o mais r\u00e1pido poss\u00edvel para garantir que seu c\u00f3digo n\u00e3o prejudique os sites dos usu\u00e1rios quando eles atualizarem.<\/p>\n\n\n\n\n<div\n\tclass=\"article-cta-shared article-cta-small\"\n>\n    <div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/article-small-ad-cta-placeholder.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/article-small-ad-cta-placeholder-x2.webp 2x\"  alt=\"Ad background image\" \/><\/div>\n\n\n\n\n  <div class=\"content-btm\">\n    <h2\n      class=\"h2--md\"\n    >\n      O Ambiente de Desenvolvimento Perfeito\n    <\/h2>\n    <p\n      class=\"p--md\"\n    >\n      N\u00f3s garantimos que seu site seja r\u00e1pido, seguro e sempre dispon\u00edvel para que seus visitantes confiem em voc\u00ea. Planos a partir de $1.99\/m\u00eas.\n    <\/p>\n\n            <a\n            href=\"https:\/\/www.dreamhost.com\/pt\/hosting\/compartilhado\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Escolha Seu Plano                    <\/a>\n\n  <\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>PHP 8.2 deve ser lan\u00e7ado em novembro deste ano, com a vers\u00e3o est\u00e1vel mais recente sendo PHP 8.1.5. Embora ainda esteja no in\u00edcio do processo, houve uma recep\u00e7\u00e3o mista em rela\u00e7\u00e3o ao PHP 8.2 e \u00e0 compatibilidade do n\u00facleo do WordPress, plugin e tema. No entanto, saber o que esperar pode ajud\u00e1-lo a se preparar para o PHP mais recente [\u2026]<\/p>\n","protected":false},"author":1062,"featured_media":34862,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_metadesc":"","toc_headlines":"[[\"h-an-overview-of-php-versions\",\"Vis\u00e3o Geral das Vers\u00f5es do PHP\"],[\"h-what-s-new-in-php-8-2\",\"Novidades no PHP 8.2\"],[\"h-keep-your-wordpress-php-version-up-to-date\",\"Mantenha Sua Vers\u00e3o PHP do WordPress Atualizada\"]]","hide_toc":false,"footnotes":""},"categories":[14387,14407],"tags":[],"class_list":["post-51398","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-conversa-tecnica-pt","category-design-de-sites-pt"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado) - DreamHost Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado)\" \/>\n<meta property=\"og:description\" content=\"PHP 8.2 deve ser lan\u00e7ado em novembro deste ano, com a vers\u00e3o est\u00e1vel mais recente sendo PHP 8.1.5. Embora ainda esteja no in\u00edcio do processo, houve uma recep\u00e7\u00e3o mista em rela\u00e7\u00e3o ao PHP 8.2 e \u00e0 compatibilidade do n\u00facleo do WordPress, plugin e tema. No entanto, saber o que esperar pode ajud\u00e1-lo a se preparar para o PHP mais recente [\u2026]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-13T14:00:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-26T19:59:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/06\/Latest-PHP-Update-Feature.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"598\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jason Cosper\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jason Cosper\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado) - DreamHost Blog","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:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/","og_locale":"en_US","og_type":"article","og_title":"PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado)","og_description":"PHP 8.2 deve ser lan\u00e7ado em novembro deste ano, com a vers\u00e3o est\u00e1vel mais recente sendo PHP 8.1.5. Embora ainda esteja no in\u00edcio do processo, houve uma recep\u00e7\u00e3o mista em rela\u00e7\u00e3o ao PHP 8.2 e \u00e0 compatibilidade do n\u00facleo do WordPress, plugin e tema. No entanto, saber o que esperar pode ajud\u00e1-lo a se preparar para o PHP mais recente [\u2026]","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2022-10-13T14:00:48+00:00","article_modified_time":"2025-05-26T19:59:28+00:00","og_image":[{"width":900,"height":598,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/06\/Latest-PHP-Update-Feature.jpeg","type":"image\/jpeg"}],"author":"Jason Cosper","twitter_card":"summary_large_image","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Jason Cosper","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/"},"author":{"name":"Jason Cosper","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/2273b8bf7336df78f6d99a89c17253c4"},"headline":"PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado)","datePublished":"2022-10-13T14:00:48+00:00","dateModified":"2025-05-26T19:59:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/"},"wordCount":2107,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/06\/Latest-PHP-Update-Feature.jpeg","articleSection":["Conversa T\u00e9cnica","Design de Sites"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/","name":"PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado) - DreamHost Blog","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/06\/Latest-PHP-Update-Feature.jpeg","datePublished":"2022-10-13T14:00:48+00:00","dateModified":"2025-05-26T19:59:28+00:00","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/06\/Latest-PHP-Update-Feature.jpeg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/06\/Latest-PHP-Update-Feature.jpeg","width":900,"height":598,"caption":"what to expect with PHP 8.2"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pt\/php-82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dhblog.dream.press\/blog\/"},{"@type":"ListItem","position":2,"name":"PHP 8.2: O que Esperar (Guia do Desenvolvedor \u2013 Atualizado)"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/2273b8bf7336df78f6d99a89c17253c4","name":"Jason Cosper","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/02\/IMG_4807-scaled.jpeg","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/02\/IMG_4807-scaled.jpeg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/02\/IMG_4807-scaled.jpeg","caption":"Jason Cosper"},"description":"Jason is DreamHost\u2019s WordPress Product Advocate, based out of Bakersfield, CA. He is currently working on making our DreamPress product even better. In his free time, he likes to curl up on the couch and watch scary movies with his wife Sarah and three very small dogs. Follow him on Twitter.","url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/jasoncosper\/"}]}},"lang":"pt","translations":{"pt":51398,"es":34876,"en":34859,"de":50851,"pl":51402,"ru":51405,"uk":51416,"it":68537,"fr":70669,"nl":70695},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/51398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1062"}],"replies":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/comments?post=51398"}],"version-history":[{"count":4,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/51398\/revisions"}],"predecessor-version":[{"id":62302,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/51398\/revisions\/62302"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/34862"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=51398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=51398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=51398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}