{"id":17427,"date":"2022-12-11T12:40:22","date_gmt":"2022-12-11T12:40:22","guid":{"rendered":"https:\/\/soloweb.com.br\/blog\/?p=17427"},"modified":"2023-04-02T12:53:15","modified_gmt":"2023-04-02T12:53:15","slug":"lancado-php-8-2-veja-as-novidades","status":"publish","type":"post","link":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/","title":{"rendered":"Lan\u00e7ado PHP 8.2 veja as novidades"},"content":{"rendered":"\n<p>O PHP 8.2 \u00e9 uma grande atualiza\u00e7\u00e3o da linguagem PHP. Ela cont\u00e9m muitos recursos novos, incluindo classes somente leitura, null, false e true como tipos aut\u00f4nomos, propriedades din\u00e2micas obsoletas, melhorias de desempenho e muito mais.<\/p>\n\n\n\n<p>Vamos ao novo PHP 8.2<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Classes somente leitura<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/\/ PHP &lt; 8.2\nclass BlogData\n{\n    public readonly string $title;\n\n    public readonly Status $status;\n\n    public function __construct(string $title, Status $status)\n    {\n        $this-&gt;title = $title;\n        $this-&gt;status = $status;\n    }\n}\n\n\/\/ PHP 8.2\nreadonly class BlogData\n{\n    public string $title;\n\n    public Status $status;\n\n    public function __construct(string $title, Status $status)\n    {\n        $this-&gt;title = $title;\n        $this-&gt;status = $status;\n    }\n}<\/code><\/pre>\n\n\n\n<p>Funcionalmente, tornar uma classe somente leitura \u00e9 o mesmo que tornar todas as propriedades somente leitura; mas tamb\u00e9m impedir\u00e1 que propriedades din\u00e2micas sejam adicionadas a uma classe.<\/p>\n\n\n\n<p>Observe que voc\u00ea s\u00f3 pode estender de classes somente leitura se a classe filha tamb\u00e9m for somente leitura.<\/p>\n\n\n\n<p>O PHP mudou bastante e as classes somente leitura s\u00e3o uma adi\u00e7\u00e3o bem-vinda. Voc\u00ea tamb\u00e9m pode dar uma olhada no meu v\u00eddeo sobre a evolu\u00e7\u00e3o do PHP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tipos de forma normal disjuntiva &#8211; DNF<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/\/ PHP &lt; 8.2\nclass Foo {\n    public function bar(mixed $entity) {\n        if ((($entity instanceof A) &amp;&amp; ($entity instanceof B)) || ($entity === null)) {\n            return $entity;\n        }\n\n        throw new Exception('Invalid entity');\n    }\n}\n\n\/\/ PHP 8.2\nclass Foo {\n    public function bar((A&amp;B)|null $entity) {\n        return $entity;\n    }\n}<\/code><\/pre>\n\n\n\n<p>O Disjunctive Normal Form (DNF) \u00e9 uma forma padronizada de organizar express\u00f5es booleanas. Ela consiste em uma disjun\u00e7\u00e3o de conjun\u00e7\u00f5es \u2013 em termos booleanos, que \u00e9 um OR de AND.<\/p>\n\n\n\n<p>Os tipos DNF permitem combinar os tipos uni\u00e3o e interse\u00e7\u00e3o, seguindo uma regra estrita: ao combinar os tipos uni\u00e3o e interse\u00e7\u00e3o, os tipos de interse\u00e7\u00e3o devem ser agrupados entre colchetes. Na pr\u00e1tica, fica assim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/\/ Veja mais um exemplo\n\nfunction generateSlug((HasTitle&amp;HasId)|null $post) \n{\n    if ($post === null) {\n        return '';\n    }\n\n    return \n        strtolower($post-&gt;getTitle()) \n        . $post-&gt;getId();\n}<\/code><\/pre>\n\n\n\n<p>Neste caso, \u00e9 o tipo DNF.(HasTitle&amp;HasId)|null<\/p>\n\n\n\n<p>\u00c9 uma boa adi\u00e7\u00e3o, especialmente porque significa que agora podemos ter tipos de interse\u00e7\u00e3o anul\u00e1veis, que provavelmente \u00e9 o caso de uso mais importante para esse recurso.<\/p>\n\n\n\n<p>O PHP 8.2 aborda v\u00e1rias defici\u00eancias e restri\u00e7\u00f5es do sistema de tipo do PHP, permitindo que os aplicativos PHP desfrutem de melhor seguran\u00e7a de tipo. Isso inclui adicionar suporte para truetype e permitir que tipos nulle falsesejam usados \u200b\u200bcomo tipos aut\u00f4nomos e suporte para tipos DNF.<\/p>\n\n\n\n<p>O PHP 8.2 suporta tipos Disjoint Normal Form (DNF) \u2014 Agora \u00e9 poss\u00edvel combinar tipos de uni\u00e3o (PHP 8.0) e tipos de interse\u00e7\u00e3o (PHP 8.1) , tornando poss\u00edvel declarar par\u00e2metros precisos e expressivos, retorno e tipos de propriedade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Permitir <strong><em>null, false e true<\/em><\/strong> como tipos aut\u00f4nomos<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/\/ PHP &lt; 8.2\n\nclass Falsy\n{\n    public function almostFalse(): bool { \/* ... *\/ *}\n\n    public function almostTrue(): bool { \/* ... *\/ *}\n\n    public function almostNull(): string|null { \/* ... *\/ *}\n}\n\n\/\/ PHP 8.2\n\nclass Falsy\n{\n    public function alwaysFalse(): false { \/* ... *\/ *}\n\n    public function alwaysTrue(): true { \/* ... *\/ *}\n\n    public function alwaysNull(): null { \/* ... *\/ *}\n}<\/code><\/pre>\n\n\n\n<p>Com o PHP 8.0, os usu\u00e1rios receberam suporte para Union Types. Voc\u00ea pode declarar um tipo como uma uni\u00e3o de dois ou mais tipos. Mesmo que voc\u00ea pudesse usar false e null como tipos poss\u00edveis, n\u00e3o era permitido us\u00e1-los como tipos aut\u00f4nomos.<\/p>\n\n\n\n<p>Com o PHP 8.2, ser\u00e1 poss\u00edvel usar false e null como tipos aut\u00f4nomos. Com esta adi\u00e7\u00e3o, o sistema de tipos do PHP ser\u00e1 mais descritivo, pois voc\u00ea poder\u00e1 declarar com mais precis\u00e3o os tipos de retorno, par\u00e2metro e propriedade.<\/p>\n\n\n\n<p>Exemplos comuns s\u00e3o as fun\u00e7\u00f5es internas do PHP, onde <strong><em>false<\/em><\/strong> \u00e9 usado como o tipo de retorno para quando ocorre um erro. Por exemplo em file_get_contents:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nfile_get_contents(\/* \u2026 *\/): string|false<\/code><\/pre>\n\n\n\n<p>Antes do PHP 8.2, voc\u00ea j\u00e1 podia usar <strong><em>false<\/em><\/strong> junto com outros tipos como uma uni\u00e3o; mas agora tamb\u00e9m pode ser usado como um tipo aut\u00f4nomo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nfunction alwaysFalse(): false\n{\n    return false;\n}<\/code><\/pre>\n\n\n\n<p>O mesmo agora vale para <strong><em>true e null.<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nova extens\u00e3o aleat\u00f3ria<\/h2>\n\n\n\n<p>O PHP 8.2 adiciona um novo gerador de n\u00fameros aleat\u00f3rios que corrige muitos problemas com o anterior: \u00e9 mais eficiente, mais seguro, mais f\u00e1cil de manter e n\u00e3o depende do estado global; eliminando uma s\u00e9rie de bugs dif\u00edceis de detectar ao usar as fun\u00e7\u00f5es aleat\u00f3rias do PHP.<\/p>\n\n\n\n<p>H\u00e1 uma nova classe chamada <strong><em>Randomizer<\/em><\/strong>, que aceita um mecanismo aleat\u00f3rio. Agora voc\u00ea pode mudar esse motor, dependendo de suas necessidades. Por exemplo, para diferenciar entre um ambiente de produ\u00e7\u00e3o e de teste.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n$rng = $is_production\n    ? new Random\\Engine\\Secure()\n    : new Random\\Engine\\Mt19937(1234);\n \n$randomizer = new Random\\Randomizer($rng);\n$randomizer-&gt;shuffleString('foobar');<\/code><\/pre>\n\n\n\n<p>Ao longo da hist\u00f3ria do PHP, ele suportou v\u00e1rios Geradores de N\u00fameros Aleat\u00f3rios (RNG) com v\u00e1rios graus de desempenho, casos de uso e ajuste para aplicativos seguros. O PHP 8.2 d\u00e1 um passo adiante ao refatorar todas as funcionalidades relacionadas ao RNG para uma nova extens\u00e3o chamada <strong><em>random<\/em><\/strong>.<\/p>\n\n\n\n<p>A <strong><em>random<\/em><\/strong> extens\u00e3o fornece a mesma funcionalidade sem interromper nenhuma API, portanto, as fun\u00e7\u00f5es , <strong><em>rand<\/em><\/strong>, e existentes continuam a funcionar sem altera\u00e7\u00f5es. Ele tamb\u00e9m fornece uma nova API OOP para gerar n\u00fameros aleat\u00f3rios com uma arquitetura conect\u00e1vel, portanto, agora \u00e9 f\u00e1cil zombar do RNG e fornecer novos RNGs, tornando os aplicativos PHP seguros e f\u00e1ceis de testar. <strong><em>mt_rand , random_bytes , random_int<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Constantes em tra\u00e7os<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/\/ PHP 8.2\n\ntrait Foo\n{\n    public const CONSTANT = 1;\n}\n\nclass Bar\n{\n    use Foo;\n}\n\nvar_dump(Bar::CONSTANT); \/\/ 1\nvar_dump(Foo::CONSTANT); \/\/ Error<\/code><\/pre>\n\n\n\n<p>Voc\u00ea n\u00e3o pode acessar a constante pelo nome da constante, mas pode acessar a constante pela classe que usa a constante.<\/p>\n\n\n\n<p>No PHP 8.2, agora \u00e9 poss\u00edvel declarar constantes em <strong><em>traits<\/em><\/strong> . As caracter\u00edsticas n\u00e3o podem ser acessadas diretamente, mas essas constantes tornam-se constantes de classe quando uma classe usa a constante.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\ntrait FooBar {\n    const FOO = 'foo';\n    private const BAR = 'bar';\n    final const BAZ = 'baz';\n    final protected const QUX = 'qux';\n}\n\nclass Test {\n    use FooBar;\n}\n\necho Test::BAZ; \/\/ 'bar'<\/code><\/pre>\n\n\n\n<p>Isso n\u00e3o era permitido no PHP 8.1 e anteriores. Constantes n\u00e3o podem ser acessadas diretamente (ou FooBar::FOO seja, n\u00e3o s\u00e3o permitidas). As constantes de <strong><em>trait<\/em><\/strong> tamb\u00e9m n\u00e3o devem colidir com outros <strong><em>trait<\/em><\/strong> ou com a classe imediata que os usa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reduzindo par\u00e2metros sens\u00edveis em Back-Trace<\/h2>\n\n\n\n<p>Como quase qualquer linguagem de programa\u00e7\u00e3o, o PHP permite rastrear sua pilha de chamadas em qualquer ponto da execu\u00e7\u00e3o do c\u00f3digo. O rastreamento da pilha facilita a depura\u00e7\u00e3o do c\u00f3digo para corrigir erros e gargalos de desempenho.<\/p>\n\n\n\n<p>A execu\u00e7\u00e3o de um rastreamento de pilha n\u00e3o impede a execu\u00e7\u00e3o do programa. Normalmente, a maioria dos tra\u00e7os de pilha s\u00e3o executados em segundo plano e s\u00e3o registrados silenciosamente \u2013 para inspe\u00e7\u00e3o posterior, se necess\u00e1rio.<\/p>\n\n\n\n<p>Entretanto, alguns desses tra\u00e7os detalhados da pilha PHP podem ser um inconveniente se voc\u00ea os compartilhar com servi\u00e7os de terceiros \u2013 geralmente para an\u00e1lise de registros de erros, rastreamento de erros, etc. Esses tra\u00e7os de pilha podem incluir informa\u00e7\u00f5es sens\u00edveis, como nomes de usu\u00e1rio, senhas e vari\u00e1veis de ambiente.<\/p>\n\n\n\n<p>O PHP 8.2 permite que voc\u00ea marque esses par\u00e2metros sens\u00edveis com um novo atributo \\SensitiveParameter. Qualquer par\u00e2metro marcado como sens\u00edvel n\u00e3o ser\u00e1 listado no seu backtraces. Assim, voc\u00ea pode compartilh\u00e1-los sem preocupa\u00e7\u00f5es com qualquer servi\u00e7o de terceiros.<\/p>\n\n\n\n<p>Aqui est\u00e1 um exemplo simples com um \u00fanico par\u00e2metro sens\u00edvel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nfunction example(\n    $ham,\n    #&#91;\\SensitiveParameter] $eggs,\n    $butter\n) {\n    throw new \\Exception('Error');\n}\n\nexample('ham', 'eggs', 'butter');\n\n\/*\nFatal error: Uncaught Exception: Error in test.php:8\nStack trace:\n#0 test.php(11): test('ham', Object(SensitiveParameterValue), 'butter')\n#1 {main}\nthrown in test.php on line 8\n*\/<\/code><\/pre>\n\n\n\n<p>Quando voc\u00ea gera um <strong>backtrace<\/strong>, qualquer par\u00e2metro com o atributo <strong><em>\\SensitiveParameter<\/em><\/strong> ser\u00e1 substitu\u00eddo por um objeto <strong><em>\\SensitiveParameterValue<\/em><\/strong>, e seu valor real nunca ser\u00e1 armazenado no tra\u00e7o. O objeto <strong><em>SensitiveParameterValue<\/em><\/strong> encapsula o valor real do par\u00e2metro \u2013 se voc\u00ea precisar dele por qualquer raz\u00e3o.<\/p>\n\n\n\n<p>Outro exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nfunction login(\n    string $user,\n    #&#91;\\SensitiveParameter] string $password\n) {\n    \/\/ \u2026\n    \n    throw new Exception('Error');\n}\n \nlogin('root', 'root');\n\n\/* \nFatal error: Uncaught Exception: Error in login.php:8\nStack trace:\n#0 login.php(11): login('root', Object(SensitiveParameterValue))\n#1 {main} thrown in login.php on line 8\n*\/<\/code><\/pre>\n\n\n\n<p>Com a marca\u00e7\u00e3o de &#8220;par\u00e2metros sens\u00edveis&#8221; com um atributo, voc\u00ea n\u00e3o precise se preocupar com eles sendo listados em seus rastreamentos de pilha quando algo der errado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Melhorias nos enums<\/h2>\n\n\n\n<p>Quando os enums foram introduzidos, era imposs\u00edvel buscar as propriedades <strong><em>name e value<\/em><\/strong> de um enum em uma express\u00e3o constante. Resumimos alguns casos de express\u00f5es constantes em que esse foi o caso:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Post\n{\n    #&#91;DefaultValue(Status::Draft-&gt;name)]\n    public string $status = Status::Draft-&gt;name;\n\n    public function updateStatus(string $status = Status::Draft-&gt;name): void\n    {\n        \/** \u2026 *\/\n    }\n}\n\nconst STATUS = Status::Draft-&gt;name;<\/code><\/pre>\n\n\n\n<p>Esta RFC prop\u00f5e permitir que o operador -&gt; \/ ?-&gt; busque <strong><em>enum<\/em><\/strong> propriedades nas express\u00f5es const.<\/p>\n\n\n\n<p>A principal raz\u00e3o para este novo recurso \u00e9 que voc\u00ea n\u00e3o pode usar enum objetos em alguns lugares, como chaves de array. Em tal caso, voc\u00ea ter\u00e1 que repetir o valor do caso enum apenas para us\u00e1-lo.<\/p>\n\n\n\n<p>Permitir a busca de propriedades <strong><em>enum<\/em><\/strong> em lugares onde <strong><em>enum<\/em><\/strong> objetos n\u00e3o s\u00e3o permitidos pode simplificar este procedimento.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nenum A: string \n{\n    case B = 'B';\n    \n    const C = &#91;self::B-&gt;value =&gt; self::B];\n}\n<\/code><\/pre>\n\n\n\n<p>E s\u00f3 por seguran\u00e7a, este RFC tamb\u00e9m inclui suporte para o operador nullsafe ?-&gt; <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deprecia\u00e7\u00f5es no PHP 8.2<\/h2>\n\n\n\n<p>O PHP 8.2 tamb\u00e9m traz uma boa quantidade de deprecia\u00e7\u00f5es. Quando uma sintaxe, fun\u00e7\u00e3o ou recurso \u00e9 obsoleto, o PHP emite um aviso de descontinua\u00e7\u00e3o que n\u00e3o deve interromper ou configurar corretamente os aplicativos PHP, mas \u00e9 registrado no log de erros.<\/p>\n\n\n\n<p>Observe que, desde o PHP 8.0, a configura\u00e7\u00e3o de relat\u00f3rio de erros padr\u00e3o do PHP \u00e9 definida comoE_ALL.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Propriedades din\u00e2micas obsoletas<\/h2>\n\n\n\n<p>Uma das reprova\u00e7\u00f5es mais not\u00e1veis \u200b\u200bno PHP 8.2 \u00e9 que ele descontinua propriedades de classe que s\u00e3o declaradas dinamicamente . Existe uma op\u00e7\u00e3o de exclus\u00e3o, mas a abordagem recomendada \u00e9 declarar as propriedades de classe na declara\u00e7\u00e3o de classe, de prefer\u00eancia com uma declara\u00e7\u00e3o de tipo tamb\u00e9m.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ PHP 8.2\n\nclass User {\n    public int $uid;\n}\n\n$user = new User();\n$user-&gt;name = 'Foo';\n\n\/\/ Sa\u00edda:\n\/\/ Deprecated: Creation of dynamic property User::$name is deprecated in ... on<\/code><\/pre>\n\n\n\n<p>\u00c9 prov\u00e1vel que muitos aplicativos PHP herdados sejam afetados por essa mudan\u00e7a, porque os aplicativos legados tendem a n\u00e3o declarar propriedades de classe quando s\u00e3o estendidos ou evolu\u00eddos ao longo dos anos com altera\u00e7\u00f5es.<\/p>\n\n\n\n<p>A corre\u00e7\u00e3o recomendada \u00e9 declarar as propriedades na classe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ PHP 8.2\n\nclass User {\n   public int $uid;\n   public string $name; \n}\n\n$user = new User();\n$user-&gt;name = 'Foo';<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><em>utf8_encode e utf8_decode<\/em><\/strong> fun\u00e7\u00f5es obsoletas<\/h2>\n\n\n\n<p>O PHP 8.2 finalmente deprecia as fun\u00e7\u00f5es <strong><em>utf8_encode e utf8_decode<\/em><\/strong> que infelizmente foram nomeadas sem notar que elas apenas codificam\/decodificam de Latin 1(ISO-8859-1).<\/p>\n\n\n\n<p>A maioria dos aplicativos PHP que usam essas fun\u00e7\u00f5es tende a n\u00e3o estar ciente dessa defici\u00eancia. As substitui\u00e7\u00f5es recomendadas incluem a melhor funcionalidade fornecida por extens\u00f5es: <strong><em>mbstring, iconv e intl<\/em><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">${var} Interpola\u00e7\u00e3o de string obsoleta<\/h2>\n\n\n\n<p>O PHP sempre deu suporte \u00e0 interpola\u00e7\u00e3o de vari\u00e1vel de string com <strong><em>&#8221; foo {$bar} &#8220;<\/em><\/strong> padr\u00e3o e junto com uma sintaxe alternativa em que o cifr\u00e3o \u00e9 colocado fora das chaves (por exemplo <strong><em>&#8221; foo ${bar} &#8220;<\/em><\/strong> , ).<\/p>\n\n\n\n<p>No PHP 8.2, a sintaxe alternativa de colocar o cifr\u00e3o fora das chaves \u00e9 obsoleta.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Obsoleto no PHP 8.2<\/th><th>Sintaxe recomendada para PHP 8.2<\/th><\/tr><\/thead><tbody><tr><td><code>Hello ${name};<\/code><\/td><td><code>Hello {$name}<\/code><\/td><\/tr><tr><td><code>echo \"Hello ${$var}\";<\/code><\/td><td><code>echo \"Hello {$$var}\";<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">As fun\u00e7\u00f5es <strong><em>strtolower e strtoupper<\/em><\/strong> n\u00e3o s\u00e3o mais sens\u00edveis \u00e0 localidade<\/h2>\n\n\n\n<p>Ambos <strong><em>strtolower() e strtoupper()<\/em><\/strong> n\u00e3o s\u00e3o mais sens\u00edveis \u00e0 localidade. <\/p>\n\n\n\n<p>Voc\u00ea pode usar <strong><em>mb_strtolower<\/em><\/strong>() se quiser convers\u00e3o de mai\u00fasculas e min\u00fasculas.<\/p>\n\n\n\n<p>Para acessar todas a novidades na integra acesse <a href=\"https:\/\/www.php.net\/ChangeLog-8.php#PHP_8_2\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.php.net\/ChangeLog-8.php#PHP_8_2<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O PHP 8.2 \u00e9 uma grande atualiza\u00e7\u00e3o da linguagem PHP. Ela cont\u00e9m muitos recursos novos, incluindo classes somente leitura, null,<\/p>\n","protected":false},"author":4,"featured_media":17431,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[106,302],"tags":[343,70,160,344],"class_list":["post-17427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","category-destaque-principal","tag-8-2","tag-php","tag-php8","tag-php8-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Lan\u00e7ado PHP 8.2 veja as novidades - SOLOWEB Tecnologia<\/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:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lan\u00e7ado PHP 8.2 veja as novidades - SOLOWEB Tecnologia\" \/>\n<meta property=\"og:description\" content=\"O PHP 8.2 \u00e9 uma grande atualiza\u00e7\u00e3o da linguagem PHP. Ela cont\u00e9m muitos recursos novos, incluindo classes somente leitura, null,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/\" \/>\n<meta property=\"og:site_name\" content=\"SOLOWEB Tecnologia\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-11T12:40:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-02T12:53:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/12\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"940\" \/>\n\t<meta property=\"og:image:height\" content=\"787\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlos Rolim\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlos Rolim\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/\"},\"author\":{\"name\":\"Carlos Rolim\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b10ff5bc260b411c2d82b19fad8ae3f1\"},\"headline\":\"Lan\u00e7ado PHP 8.2 veja as novidades\",\"datePublished\":\"2022-12-11T12:40:22+00:00\",\"dateModified\":\"2023-04-02T12:53:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/\"},\"wordCount\":1591,\"publisher\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg\",\"keywords\":[\"8.2\",\"PHP\",\"php8\",\"php8.2\"],\"articleSection\":[\"Desenvolvimento\",\"Destaque Principal\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/\",\"name\":\"Lan\u00e7ado PHP 8.2 veja as novidades - SOLOWEB Tecnologia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg\",\"datePublished\":\"2022-12-11T12:40:22+00:00\",\"dateModified\":\"2023-04-02T12:53:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/#primaryimage\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg\",\"width\":940,\"height\":787},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/12\\\/11\\\/lancado-php-8-2-veja-as-novidades\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lan\u00e7ado PHP 8.2 veja as novidades\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\",\"name\":\"SOLOWEB Tecnologia\",\"description\":\"SOLOWEB Tecnologia\",\"publisher\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\",\"name\":\"SOLOWEB Tecnologia\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-solo.png\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-solo.png\",\"width\":341,\"height\":94,\"caption\":\"SOLOWEB Tecnologia\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b10ff5bc260b411c2d82b19fad8ae3f1\",\"name\":\"Carlos Rolim\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"caption\":\"Carlos Rolim\"},\"sameAs\":[\"http:\\\/\\\/carlosrolim.com\"],\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/author\\\/carlos\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lan\u00e7ado PHP 8.2 veja as novidades - SOLOWEB Tecnologia","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:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/","og_locale":"pt_BR","og_type":"article","og_title":"Lan\u00e7ado PHP 8.2 veja as novidades - SOLOWEB Tecnologia","og_description":"O PHP 8.2 \u00e9 uma grande atualiza\u00e7\u00e3o da linguagem PHP. Ela cont\u00e9m muitos recursos novos, incluindo classes somente leitura, null,","og_url":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/","og_site_name":"SOLOWEB Tecnologia","article_published_time":"2022-12-11T12:40:22+00:00","article_modified_time":"2023-04-02T12:53:15+00:00","og_image":[{"width":940,"height":787,"url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/12\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg","type":"image\/jpeg"}],"author":"Carlos Rolim","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Carlos Rolim","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/#article","isPartOf":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/"},"author":{"name":"Carlos Rolim","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/person\/b10ff5bc260b411c2d82b19fad8ae3f1"},"headline":"Lan\u00e7ado PHP 8.2 veja as novidades","datePublished":"2022-12-11T12:40:22+00:00","dateModified":"2023-04-02T12:53:15+00:00","mainEntityOfPage":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/"},"wordCount":1591,"publisher":{"@id":"https:\/\/soloweb.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/#primaryimage"},"thumbnailUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/12\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg","keywords":["8.2","PHP","php8","php8.2"],"articleSection":["Desenvolvimento","Destaque Principal"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/","url":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/","name":"Lan\u00e7ado PHP 8.2 veja as novidades - SOLOWEB Tecnologia","isPartOf":{"@id":"https:\/\/soloweb.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/#primaryimage"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/#primaryimage"},"thumbnailUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/12\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg","datePublished":"2022-12-11T12:40:22+00:00","dateModified":"2023-04-02T12:53:15+00:00","breadcrumb":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/#primaryimage","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/12\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/12\/WhatsApp-Image-2022-12-09-at-23.29.02.jpeg","width":940,"height":787},{"@type":"BreadcrumbList","@id":"https:\/\/soloweb.com.br\/blog\/2022\/12\/11\/lancado-php-8-2-veja-as-novidades\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/soloweb.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Lan\u00e7ado PHP 8.2 veja as novidades"}]},{"@type":"WebSite","@id":"https:\/\/soloweb.com.br\/blog\/#website","url":"https:\/\/soloweb.com.br\/blog\/","name":"SOLOWEB Tecnologia","description":"SOLOWEB Tecnologia","publisher":{"@id":"https:\/\/soloweb.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/soloweb.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/soloweb.com.br\/blog\/#organization","name":"SOLOWEB Tecnologia","url":"https:\/\/soloweb.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/04\/cropped-solo.png","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/04\/cropped-solo.png","width":341,"height":94,"caption":"SOLOWEB Tecnologia"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/person\/b10ff5bc260b411c2d82b19fad8ae3f1","name":"Carlos Rolim","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","caption":"Carlos Rolim"},"sameAs":["http:\/\/carlosrolim.com"],"url":"https:\/\/soloweb.com.br\/blog\/author\/carlos\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/17427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=17427"}],"version-history":[{"count":9,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/17427\/revisions"}],"predecessor-version":[{"id":17816,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/17427\/revisions\/17816"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/media\/17431"}],"wp:attachment":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=17427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=17427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=17427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}