{"id":29579,"date":"2019-10-07T08:33:53","date_gmt":"2019-10-07T15:33:53","guid":{"rendered":"https:\/\/kinsta.com\/?p=46699"},"modified":"2025-02-26T10:10:19","modified_gmt":"2025-02-26T13:10:19","slug":"php-7-4","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/","title":{"rendered":"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)"},"content":{"rendered":"<p>PHP 7.4, a pr\u00f3xima vers\u00e3o menor do PHP 7, foi lan\u00e7ada em 28 de novembro de 2019. Ent\u00e3o \u00e9 hora de mergulharmos em algumas das mais emocionantes adi\u00e7\u00f5es e novas funcionalidades que ter\u00e3o tornado o PHP mais r\u00e1pido e confi\u00e1vel.<\/p>\n<p><strong>Atualiza\u00e7\u00e3o:<\/strong> <a href=\"https:\/\/kinsta.com\/pt\/changelog\/php-8-1\/\">PHP 8.1 (vers\u00e3o oficial)<\/a> est\u00e1 agora dispon\u00edvel para todos os clientes Kinsta. O PHP 7.4 n\u00e3o \u00e9 mais suportado na Kinsta. Por favor, note que somente suportamos vers\u00f5es PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 e 8.5.<\/p>\n<p>Mesmo que o PHP 7.4 aumente significativamente a performance e melhore a legibilidade do c\u00f3digo, o <a href=\"https:\/\/kinsta.com\/pt\/blog\/php-8\/\">PHP 8<\/a> ser\u00e1 o verdadeiro marco para a performance do PHP, j\u00e1 que a proposta de <a href=\"https:\/\/wiki.php.net\/rfc\/jit\">inclus\u00e3o do JIT<\/a> j\u00e1 foi aprovada.<\/p>\n<p>De qualquer forma, hoje estamos passando por algumas das funcionalidades e mudan\u00e7as mais interessantes que estamos esperando com o PHP 7.4. S\u00f3 para que conste, estas foram as datas importantes para a vers\u00e3o 7.4:<\/p>\n<ul>\n<li>6 de Junho de 2019: PHP 7.4 Alpha 1<\/li>\n<li>18 de Julho de 2019: PHP 7.4 Beta 1 &#8211; Congelamento de recursos<\/li>\n<li>28 de Novembro de 2019: Lan\u00e7amento do PHP 7.4 GA<\/li>\n<\/ul>\n<p>Voc\u00ea pode conferir a lista completa de recursos e adi\u00e7\u00f5es <a href=\"https:\/\/wiki.php.net\/rfc#php_74\">na p\u00e1gina oficial da RFC<\/a>.<\/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>O que h\u00e1 de novo no PHP 7.4?<\/h2>\n<p>Neste artigo estamos cobrindo v\u00e1rias mudan\u00e7as e funcionalidades que devem ser adicionadas \u00e0 linguagem com o lan\u00e7amento final do PHP 7.4:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"9\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3 id=\"array-spread-operator\">Esque\u00e7a o array_merge: PHP 7.4 traz o operador de propaga\u00e7\u00e3o para a express\u00e3o array<\/h3>\n<p>Dispon\u00edvel desde o PHP 5.6, <a href=\"https:\/\/wiki.php.net\/rfc\/argument_unpacking\">a descompacta\u00e7\u00e3o de argumentos<\/a> \u00e9 uma sintaxe para descompactar arrays e <a href=\"https:\/\/www.php.net\/manual\/en\/class.traversable.php\">Traversables<\/a> em listas de argumentos. Para descompactar um array ou um Traversable, ele deve ser precedido por &#8230; (3 pontos), como mostrado no exemplo a seguir:<\/p>\n<pre><code class=\"language-php\">function test(...$args) { var_dump($args); }\ntest(1, 2, 3);<\/code><\/pre>\n<p>Agora <a href=\"https:\/\/wiki.php.net\/rfc\/spread_operator_for_array\">esta RFC do PHP 7.4<\/a> prop\u00f5e estender este recurso para defini\u00e7\u00f5es de array:<\/p>\n<pre><code class=\"language-php\">$arr = [...$args];<\/code><\/pre>\n<p>O primeiro benef\u00edcio declarado do <strong>Spread Operator na express\u00e3o de array<\/strong> \u00e9 tudo sobre desempenho. Na verdade, <a href=\"https:\/\/wiki.php.net\/rfc\/spread_operator_for_array\">o m\u00e9dico da RFC afirma<\/a>:<\/p>\n<blockquote><p>O operador Spread deve ter melhor desempenho do que o <code>array_merge<\/code>. Isso n\u00e3o \u00e9 s\u00f3 porque o operador spread \u00e9 uma estrutura de linguagem enquanto <code>array_merge<\/code> \u00e9 uma fun\u00e7\u00e3o, mas tamb\u00e9m porque a otimiza\u00e7\u00e3o de tempo de compila\u00e7\u00e3o pode ser performante para arrays constantes.<\/p><\/blockquote>\n<p>Uma vantagem significativa do operador Spread \u00e9 que ele suporta qualquer objeto pass\u00edvel de ser atravessado, enquanto a fun\u00e7\u00e3o <code>array_merge<\/code> apenas suporta arrays.<\/p>\n<p>Aqui est\u00e1 um exemplo de descompacta\u00e7\u00e3o de argumentos na express\u00e3o array:<\/p>\n<pre><code class=\"language-php\">$parts = ['apple', 'pear'];\n$fruits = ['banana', 'orange', ...$parts, 'watermelon'];\nvar_dump($fruits);<\/code><\/pre>\n<p>Se voc\u00ea executar este c\u00f3digo com o PHP 7.3 ou anterior, o PHP emite um erro de Parse:<\/p>\n<pre><code class=\"language-php\">Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in \/app\/spread-operator.php on line 3<\/code><\/pre>\n<p>Em vez disso, o PHP 7.4 retornaria um array:<\/p>\n<pre><code class=\"language-php\">array(5) {\n\t[0]=&gt;\n\tstring(6) \"banana\"\n\t[1]=&gt;\n\tstring(6) \"orange\"\n\t[2]=&gt;\n\tstring(5) \"apple\"\n\t[3]=&gt;\n\tstring(4) \"pear\"\n\t[4]=&gt;\n\tstring(10) \"watermelon\"\n}<\/code><\/pre>\n<p>A RFC afirma que podemos expandir o mesmo array v\u00e1rias vezes. Al\u00e9m disso, podemos usar a sintaxe Spread Operator em qualquer lugar do array, j\u00e1 que elementos normais podem ser adicionados antes ou depois do operador spread. Assim, o seguinte c\u00f3digo funcionar\u00e1 como seria de esperar:<\/p>\n<pre><code class=\"language-php\">$arr1 = [1, 2, 3];\n$arr2 = [4, 5, 6];\n$arr3 = [...$arr1, ...$arr2];\n$arr4 = [...$arr1, ...$arr3, 7, 8, 9];<\/code><\/pre>\n<p>Tamb\u00e9m \u00e9 poss\u00edvel desempacotar arrays retornados por uma fun\u00e7\u00e3o diretamente em um novo array:<\/p>\n<pre><code class=\"language-php\">function buildArray(){\n\treturn ['red', 'green', 'blue'];\n}\n$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];<\/code><\/pre>\n<p>O PHP 7.4 produz o seguinte array:<\/p>\n<pre><code class=\"language-php\">array(6) {\n\t[0]=&gt;\n\tstring(3) \"red\"\n\t[1]=&gt;\n\tstring(5) \"green\"\n\t[2]=&gt;\n\tstring(4) \"blue\"\n\t[3]=&gt;\n\tstring(4) \"pink\"\n\t[4]=&gt;\n\tstring(6) \"violet\"\n\t[5]=&gt;\n\tstring(6) \"yellow\"\n}<\/code><\/pre>\n<p>Tamb\u00e9m podemos usar a\u00a0<a href=\"https:\/\/www.php.net\/manual\/en\/language.generators.syntax.php\">sintaxe do gerador<\/a>:<\/p>\n<pre><code class=\"language-php\">function generator() {\n\tfor ($i = 3; $i &lt;= 5; $i++) {\n\t\tyield $i;\n\t}\n}\n$arr1 = [0, 1, 2, ...generator()];<\/code><\/pre>\n<p>Mas n\u00e3o nos \u00e9 permitido desempacotar arrays passados por arrays. Considere o seguinte exemplo:<\/p>\n<pre><code class=\"language-php\">$arr1 = ['red', 'green', 'blue'];\n$arr2 = [...&$arr1];<\/code><\/pre>\n<p>Se tentarmos descompactar um array por refer\u00eancia, o PHP lan\u00e7a o seguinte erro de Parse:<\/p>\n<pre><code class=\"language-php\">Parse error: syntax error, unexpected '&' in \/app\/spread-operator.php on line 3<\/code><\/pre>\n<p>De qualquer forma, se os elementos do primeiro array s\u00e3o armazenados por refer\u00eancia, eles s\u00e3o armazenados por refer\u00eancia no segundo array, tamb\u00e9m. Aqui est\u00e1 um exemplo:<\/p>\n<pre><code class=\"language-php\">$arr0 = 'red';\n$arr1 = [&$arr0, 'green', 'blue'];\n$arr2 = ['white', ...$arr1, 'black'];<\/code><\/pre>\n<p>E aqui est\u00e1 o que temos com o PHP 7.4:<\/p>\n<pre><code>array(5) {\n\t[0]=&gt;\n\tstring(5) \"white\"\n\t[1]=&gt;\n\t<strong>&string(3) \"red\"<\/strong>\n\t[2]=&gt;\n\tstring(5) \"green\"\n\t[3]=&gt;\n\tstring(4) \"blue\"\n\t[4]=&gt;\n\tstring(5) \"black\"\n}<\/code><\/pre>\n<p>A proposta do operador de Spread passou com 43 para 1 votos.<\/p>\n<h3 id=\"arrow-functions\">Arrow Functions 2.0 (Short Closures)<\/h3>\n<p>No PHP, <a href=\"https:\/\/www.php.net\/manual\/en\/functions.anonymous.php\">fun\u00e7\u00f5es an\u00f4nimas<\/a> s\u00e3o consideradas bastante verbosas e dif\u00edceis de implementar e manter. <a href=\"https:\/\/wiki.php.net\/rfc\/arrow_functions_v2\">Esta RFC<\/a> prop\u00f5e a introdu\u00e7\u00e3o da sintaxe mais curta e clara das<strong> Arrow Functions<\/strong> (ou Short Closures), que deve nos permitir limpar significativamente nosso c\u00f3digo PHP.<\/p>\n<p>Considere o seguinte exemplo:<\/p>\n<pre><code class=\"language-php\">function cube($n){\n\treturn ($n * $n * $n);\n}\n$a = [1, 2, 3, 4, 5];\n$b = array_map('cube', $a);\nprint_r($b);<\/code><\/pre>\n<p>O PHP 7.4 permite usar uma sintaxe mais concisa, e a fun\u00e7\u00e3o acima pode ser reescrita da seguinte forma:<\/p>\n<pre><code class=\"language-php\">$a = [1, 2, 3, 4, 5];\n$b = array_map(fn($n) =&gt; $n * $n * $n, $a);\nprint_r($b);<\/code><\/pre>\n<p>Atualmente, <a href=\"https:\/\/www.php.net\/manual\/en\/functions.anonymous.php\">fun\u00e7\u00f5es an\u00f4nimas<\/a> (closures) podem herdar vari\u00e1veis definidas no escopo pai gra\u00e7as \u00e0 constru\u00e7\u00e3o da linguagem de <code>use<\/code>, como mostrado abaixo:<\/p>\n<pre><code class=\"language-php\">$factor = 10;\n$calc = function($num) use($factor){\n\treturn $num * $factor;\n};<\/code><\/pre>\n<p>Mas com o PHP 7.4, vari\u00e1veis definidas no escopo pai s\u00e3o<strong> implicitamente capturadas pelo valor<\/strong> (liga\u00e7\u00e3o impl\u00edcita por valor ao escopo). Assim podemos escrever toda a fun\u00e7\u00e3o vista acima numa \u00fanica linha:<\/p>\n<pre><code class=\"language-php\">$factor = 10;\n$calc = fn($num) =&gt; $num * $factor;<\/code><\/pre>\n<p>A vari\u00e1vel definida no escopo pai pode ser usada na fun\u00e7\u00e3o de seta exatamente como se estiv\u00e9ssemos usando <code class=\"language-php\">use($var)<\/code>, e n\u00e3o \u00e9 poss\u00edvel modificar uma vari\u00e1vel do escopo pai.<\/p>\n<p>A nova sintaxe \u00e9 uma grande melhoria para a linguagem, pois permite-nos construir c\u00f3digo mais leg\u00edvel e de f\u00e1cil manuten\u00e7\u00e3o. Tamb\u00e9m podemos usar <a href=\"https:\/\/kinsta.com\/pt\/blog\/php-7-2\/\">tipos de par\u00e2metros e retornos<\/a>, valores padr\u00e3o, listas de argumentos de comprimento vari\u00e1vel (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Variadic_function\">variadic functions<\/a>), podemos passar e retornar por refer\u00eancia, etc. Finalmente, Short Closures tamb\u00e9m podem ser usados em m\u00e9todos de classe, e eles podem fazer uso da vari\u00e1vel <code>$this<\/code> como fechamentos regulares.<\/p>\n<p>Esta RFC foi aprovada com 51 a 8 votos, ent\u00e3o podemos esperar que ela fa\u00e7a parte das adi\u00e7\u00f5es do PHP 7.4.<\/p>\n<h3 id=\"nulled-coalesce-assign-operator\">Operador de coalesc\u00eancia nula<\/h3>\n<p>Adicionado com PHP 7, o <a href=\"https:\/\/www.php.net\/manual\/en\/migration70.new-features.php#migration70.new-features.null-coalesce-op\">operador coalescente<\/a> (<code>???<\/code> ) \u00e9 \u00fatil quando precisamos usar um operador tern\u00e1rio em conjunto com <code>isset()<\/code>. Retorna o primeiro operando se existe e n\u00e3o \u00e9 <code>NULL<\/code>. Caso contr\u00e1rio, retorna o segundo operando. Aqui est\u00e1 um exemplo:<\/p>\n<pre><code class=\"language-php\">$username = $_GET['user'] ?? 'nobody';<\/code><\/pre>\n<p>O que esse c\u00f3digo faz \u00e9 bem simples: <strong>ele obt\u00e9m o par\u00e2metro request e define um valor padr\u00e3o se ele n\u00e3o existir<\/strong>. O significado dessa linha \u00e9 claro, mas e se tiv\u00e9ssemos nomes de vari\u00e1veis muito mais longos como neste exemplo da RFC?<\/p>\n<pre><code class=\"language-php\">$this-&gt;request-&gt;data['comments']['user_id'] = $this-&gt;request-&gt;data['comments']['user_id'] ?? 'value';<\/code><\/pre>\n<p>A longo prazo, este c\u00f3digo pode ser um pouco dif\u00edcil de manter. Assim, com o objetivo de ajudar os desenvolvedores a escrever c\u00f3digo mais intuitivo, <a href=\"https:\/\/wiki.php.net\/rfc\/null_coalesce_equal_operator\">esta RFC<\/a> prop\u00f5e a introdu\u00e7\u00e3o do<strong> operador de coalesc\u00eancia nula<\/strong>\u00a0(<code>??=<\/code>). Ent\u00e3o, em vez de escrever o c\u00f3digo anterior, poder\u00edamos escrever o seguinte:<\/p>\n<pre><code class=\"language-php\">$this-&gt;request-&gt;data['comments']['user_id'] ??= 'value';<\/code><\/pre>\n<p>Se o valor do par\u00e2metro esquerdo for <code>null<\/code>, ent\u00e3o o valor do par\u00e2metro direito \u00e9 utilizado.<br \/>\nNote que, enquanto o operador coalescente \u00e9 um operador de compara\u00e7\u00e3o, <code>??=<\/code> \u00e9 um operador de atribui\u00e7\u00e3o.<\/p>\n<p>Esta proposta foi aprovada com 37 votos a favor e 4 contra.<\/p>\n<h3 id=\"typed-properties\" class=\"has-anchor-hash\">Typed Properties 2.0<\/h3>\n<p>As declara\u00e7\u00f5es de tipo de argumento, ou dicas de tipo, permitem especificar o tipo de uma vari\u00e1vel que se espera que seja passada para uma fun\u00e7\u00e3o ou um m\u00e9todo de classe. Dicas de tipo s\u00e3o um recurso dispon\u00edvel desde o PHP 5, e desde o <a href=\"https:\/\/kinsta.com\/pt\/blog\/php-7-2\/\">PHP 7.2<\/a> podemos us\u00e1-las com o tipo de dados do <code>object<\/code>. Agora o PHP 7.4 traz o type hinting um passo \u00e0 frente adicionando suporte para <a href=\"https:\/\/wiki.php.net\/rfc\/typed_properties_v2\">declara\u00e7\u00f5es de tipo de propriedade de primeira classe<\/a>. Aqui est\u00e1 um exemplo muito b\u00e1sico:<\/p>\n<pre><code class=\"language-php\">class User {\n\tpublic int $id;\n\tpublic string $name;\n}<\/code><\/pre>\n<p>Todos os tipos s\u00e3o suportados, com exce\u00e7\u00e3o de <code>void<\/code> e <code>callable<\/code>:<\/p>\n<pre><code class=\"language-php\">public int $scalarType;\nprotected ClassName $classType;\nprivate ?ClassName $nullableClassType;<\/code><\/pre>\n<p>A RFC explica o motivo pelo qual n\u00e3o h\u00e1 suporte para <code>void<\/code> e <code>callable<\/code>:<\/p>\n<blockquote><p>O tipo de vazio n\u00e3o \u00e9 suportado, porque n\u00e3o \u00e9 \u00fatil e tem sem\u00e2ntica pouco clara.<\/p><\/blockquote>\n<blockquote><p>O tipo de chamada n\u00e3o \u00e9 suportado, porque seu comportamento \u00e9 dependente do contexto.<\/p><\/blockquote>\n<p>Assim podemos usar com seguran\u00e7a <code>bool<\/code>, <code>int<\/code>, <code>float<\/code>, <code>string<\/code>, <code>array<\/code>, <code>object<\/code>, <code>iterable<\/code>, <code>self<\/code>, <code>parent<\/code>, qualquer classe ou nome de interface, e <a href=\"https:\/\/php.net\/manual\/en\/migration71.new-features.php\">tipos<\/a><a href=\"https:\/\/kinsta.com\/blog\/php-7-1-0\/#nullable-types\">anul\u00e1veis<\/a> (<code>? type<\/code>).<\/p>\n<p>Os tipos podem ser usados em propriedades est\u00e1ticas:<\/p>\n<pre><code class=\"language-php\">public static iterable $staticProp;<\/code><\/pre>\n<p>Tamb\u00e9m s\u00e3o permitidos com a nota\u00e7\u00e3o <code>var<\/code>:<\/p>\n<pre><code class=\"language-php\">var bool $flag;<\/code><\/pre>\n<p>\u00c9 poss\u00edvel definir valores de propriedade padr\u00e3o, que obviamente devem corresponder ao tipo de propriedade declarado, mas somente propriedades anul\u00e1veis podem ter um valor <code>null<\/code> padr\u00e3o:<\/p>\n<pre><code class=\"language-php\">public string $str = \"foo\";\npublic ?string $nullableStr = null;<\/code><\/pre>\n<p>O mesmo tipo aplica-se a todas as propriedades numa \u00fanica declara\u00e7\u00e3o:<\/p>\n<pre><code class=\"language-php\">public float $x, $y;<\/code><\/pre>\n<p>O que acontece se fizermos um erro no tipo de propriedade? Considere o seguinte c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">class User {\n\tpublic int $id;\n\tpublic string $name;\n}\n\n$user = new User;\n$user-&gt;id = 10;\n$user-&gt;name = [];<\/code><\/pre>\n<p>No c\u00f3digo acima, declaramos um tipo de propriedade string, mas definimos um array como valor de propriedade. Neste cen\u00e1rio, obtemos o seguinte erro Fatal:<\/p>\n<pre><code class=\"language-php\">Fatal error: Uncaught TypeError: Typed property User::$name must be string, array used in \/app\/types.php:9<\/code><\/pre>\n<p>Esta RFC foi aprovada com 70 votos a 1 voto.<\/p>\n\n<h3 id=\"weakreferences\">Weak References<\/h3>\n<p>Com <a href=\"https:\/\/wiki.php.net\/rfc\/weakrefs\">essa RFC<\/a>, o PHP 7.4 introduz a classe <a href=\"https:\/\/www.php.net\/manual\/en\/class.weakreference.php\">WeakReference<\/a>, que permite aos programadores manter uma refer\u00eancia a um objeto que n\u00e3o impede que o pr\u00f3prio objeto seja destru\u00eddo.<\/p>\n<p>Atualmente o PHP suporta refer\u00eancias fracas usando uma extens\u00e3o como pecl-weakref. De qualquer forma, a nova API \u00e9 diferente da classe <code>WeakRef<\/code> documentada.<\/p>\n<p>Aqui est\u00e1 <a href=\"https:\/\/www.slideshare.net\/nikita_ppv\/typed-properties-and-more-whats-coming-in-php-74\">um exemplo do autor<\/a> desta proposta, Nikita Popov:<\/p>\n<pre><code class=\"language-php\">$object = new stdClass;\n$weakRef = WeakReference::create($object);\n\nvar_dump($weakRef-&gt;get());\nunset($object);\nvar_dump($weakRef-&gt;get());<\/code><\/pre>\n<p>O primeiro <code>var_dump<\/code> imprime <code class=\"language-php\">object(stdClass)#1 (0) {}<\/code>, enquanto o segundo <code>var_dump<\/code> imprime <code>NULL<\/code>, pois o objeto referenciado foi destru\u00eddo.<\/p>\n<p>Esta RFC passou com 28 a 5 votos.<\/p>\n<h3 id=\"covariant-return-types-contravariant-parameters\">Tipos de retorno covariantes e par\u00e2metros contraservariantes<\/h3>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Covariance_and_contravariance_(computer_science)\">A vari\u00e2ncia<\/a> \u00e9 uma propriedade das hierarquias de classes que descrevem como os tipos de um construtor de tipo afetam <a href=\"https:\/\/en.wikipedia.org\/wiki\/Subtyping\">os subtipos<\/a>. Em geral, um construtor de tipo pode ser:<\/p>\n<ul>\n<li><strong>Invariante<\/strong>: se o tipo da restri\u00e7\u00e3o de supertipo for o tipo do subtipo.<\/li>\n<li><strong>Covariante<\/strong>: se a ordena\u00e7\u00e3o dos tipos \u00e9 preservada (os tipos s\u00e3o ordenados de mais espec\u00edfico para mais gen\u00e9rico).<\/li>\n<li><strong>Contravariante<\/strong>: se inverter a ordem (os tipos s\u00e3o ordenados de mais gen\u00e9ricos para mais espec\u00edficos).<\/li>\n<\/ul>\n<p>Atualmente, o PHP tem par\u00e2metros e tipos de retorno invariantes, com poucas exce\u00e7\u00f5es. Esta RFC prop\u00f5e permitir covari\u00e2ncia e contravari\u00e2ncia em tipos de par\u00e2metros e tipos de retorno, fornecendo tamb\u00e9m v\u00e1rios exemplos de c\u00f3digo.<\/p>\n<p>Aqui est\u00e1 um exemplo de <strong>tipo de retorno covariante<\/strong>:<\/p>\n<pre><code class=\"language-php\">interface Factory {\n\tfunction make(): object;\n}\n\nclass UserFactory implements Factory {\n\tfunction make(): User;\n}<\/code><\/pre>\n<p>E aqui est\u00e1 um exemplo de <strong>tipo de par\u00e2metro contravariante<\/strong>:<\/p>\n<pre><code class=\"language-php\">interface Concatable {\n\tfunction concat(Iterator $input); \n}\n \nclass Collection implements Concatable {\n\t\/\/ accepts all iterables, not just Iterator\n\tfunction concat(iterable $input) {\/* . . . *\/}\n}<\/code><\/pre>\n<p>Veja <a href=\"https:\/\/wiki.php.net\/rfc\/covariant-returns-and-contravariant-parameters\">a RFC<\/a> para um olhar mais atento sobre covari\u00e2ncia e contravaria\u00e7\u00e3o no PHP 7.4.<\/p>\n<p>Esta RFC passou com 39 para 1 votos.<\/p>\n<h3 id=\"preloading\">Preloading<\/h3>\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/preload\">Esta proposta<\/a> de Dmitry Stogov \u00e9 uma das nossas favoritas porque deve trazer um impulso significativo no desempenho. <strong>Preloading<\/strong>\u00a0\u00e9 o processo de carregar bibliotecas e frameworks para o <a href=\"https:\/\/www.php.net\/manual\/en\/book.opcache.php\">OPCache<\/a> na inicializa\u00e7\u00e3o do m\u00f3dulo (leia mais sobre o <a href=\"http:\/\/www.phpinternalsbook.com\/php7\/extensions_design\/php_lifecycle.html\">ciclo de vida do PHP<\/a>).<\/p>\n<figure style=\"width: 335px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/05\/ciclo-de-vida-php.png\" alt=\"Ciclo de vida do PHP\" width=\"335\" height=\"323\"><figcaption class=\"wp-caption-text\">Ciclo de vida do PHP (Fonte da imagem: <a href=\"https:\/\/phpinternals.net\/categories\/extensions\">PHP Internals<\/a>)<\/figcaption><\/figure>\n<p>Aqui est\u00e1 como o preloading funciona nas palavras de Dmitry:<\/p>\n<blockquote><p>Na inicializa\u00e7\u00e3o do servidor &#8211; antes que qualquer c\u00f3digo de aplica\u00e7\u00e3o seja executado &#8211; podemos carregar um certo conjunto de arquivos PHP na mem\u00f3ria &#8211; e tornar seu conte\u00fado &#8220;permanentemente dispon\u00edvel&#8221; para todas as requisi\u00e7\u00f5es subseq\u00fcentes que ser\u00e3o atendidas por esse servidor. Todas as fun\u00e7\u00f5es e classes definidas nestes arquivos estar\u00e3o dispon\u00edveis para solicita\u00e7\u00f5es fora da caixa, exatamente como entidades internas.<\/p><\/blockquote>\n<p>Esses arquivos s\u00e3o carregados na inicializa\u00e7\u00e3o do servidor, s\u00e3o executados antes de qualquer aplica\u00e7\u00e3o e permanecem dispon\u00edveis para quaisquer solicita\u00e7\u00f5es futuras. Isso \u00e9 \u00f3ptimo em termos de desempenho.<\/p>\n<p>O Preloading \u00e9 controlada por uma diretiva <code>php.ini<\/code> espec\u00edfica: <code>opcache.preload<\/code>. Esta diretiva especifica um script PHP para ser compilado e executado na inicializa\u00e7\u00e3o do servidor. Este arquivo pode ser usado para pr\u00e9-carregar arquivos adicionais, incluindo-os ou atrav\u00e9s da fun\u00e7\u00e3o <code>opcache_compile_file()<\/code> (leia mais na <a href=\"https:\/\/www.php.net\/manual\/en\/function.opcache-compile-file.php\">documenta\u00e7\u00e3o do PHP<\/a>).<\/p>\n<p>Mas h\u00e1 uma desvantagem. Na verdade, a RFC afirma explicitamente:<\/p>\n<blockquote><p>Os arquivos Preloading permanecem em cache na mem\u00f3ria opcache para sempre. A modifica\u00e7\u00e3o de seus arquivos fonte correspondentes n\u00e3o ter\u00e1 nenhum efeito sem que outro servidor seja reiniciado.<\/p><\/blockquote>\n<p>No entanto, todas as fun\u00e7\u00f5es definidas em arquivos Preloading ser\u00e3o permanentemente carregadas nas tabelas de fun\u00e7\u00f5es e classes do PHP, e permanecer\u00e3o dispon\u00edveis para cada solicita\u00e7\u00e3o futura. Isto conduzir\u00e1 a melhorias de bom desempenho, ainda que essas melhorias possam ser consideravelmente vari\u00e1veis.<\/p>\n<p>Voc\u00ea pode ler mais sobre as limita\u00e7\u00f5es e exce\u00e7\u00f5es de pr\u00e9-carregamento na <a href=\"https:\/\/wiki.php.net\/rfc\/preload\">p\u00e1gina oficial Pr\u00e9-carregamento RFC<\/a>.<\/p>\n<h3 id=\"serialization\">Novo mecanismo para a serializa\u00e7\u00e3o de objetos personalizados<\/h3>\n<p>Esta \u00e9 <a href=\"https:\/\/nikic.github.io\/aboutMe.html\">outra proposta<\/a> de Nikita Popov aprovada por uma grande maioria de votos.<\/p>\n<p>Atualmente, temos dois mecanismos diferentes para serializa\u00e7\u00e3o personalizada de objetos em PHP:<\/p>\n<ul>\n<li>Os m\u00e9todos<code> __sleep()<\/code> e <code>__wakeup()<\/code> m\u00e1gicos<\/li>\n<li>A interface <code>serializ\u00e1vel<\/code><\/li>\n<\/ul>\n<p>De acordo com Nikita, ambas as op\u00e7\u00f5es t\u00eam problemas que levam a um c\u00f3digo complexo e n\u00e3o confi\u00e1vel. Voc\u00ea pode mergulhar fundo neste t\u00f3pico na <a href=\"https:\/\/wiki.php.net\/rfc\/custom_object_serialization\">RFC<\/a>. Aqui eu apenas menciono que o novo mecanismo de serializa\u00e7\u00e3o deve evitar esses problemas, fornecendo dois novos m\u00e9todos m\u00e1gicos, <code>__serialize<\/code>() e <code>__unserialize<\/code>(), que combinam os dois mecanismos existentes.<\/p>\n<p>Esta proposta foi aprovada por 20 a 7 votos a favor.<\/p>\n<h3 id=\"deprecations\">Deprecia\u00e7\u00f5es<\/h3>\n<p>As seguintes fun\u00e7\u00f5es\/funcionalidades ser\u00e3o obsoletas com o PHP 7.4. Para uma lista mais abrangente de deprecia\u00e7\u00f5es, confira <a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-7.4\/UPGRADING\">as Notas de Atualiza\u00e7\u00e3o do PHP 7.4<\/a>.<\/p>\n<h4>Alterar a prioridade do operador da concatena\u00e7\u00e3o<\/h4>\n<p>Atualmente, em PHP os operadores aritm\u00e9ticos &#8220;+&#8221; e &#8220;-&#8220;, e o operador de string &#8220;.&#8221; s\u00e3o associativos \u00e0 esquerda e t\u00eam a mesma preced\u00eancia (leia mais sobre <a href=\"https:\/\/www.php.net\/manual\/en\/language.operators.precedence.php\">Preced\u00eancia do Operador<\/a>).<\/p>\n<p>Como exemplo, considere a seguinte linha:<\/p>\n<pre><code class=\"language-php\">echo \"sum: \" . $a + $b;<\/code><\/pre>\n<p>No PHP 7.3 este c\u00f3digo produz o seguinte aviso:<\/p>\n<pre><code class=\"language-php\">Warning: A non-numeric value encountered in \/app\/types.php on line 4<\/code><\/pre>\n<p>Isto porque a concatena\u00e7\u00e3o \u00e9 avaliada da esquerda para a direita. \u00c9 o mesmo que escrever o seguinte c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">echo (\"sum: \" . $a) + $b;<\/code><\/pre>\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/concatenation_precedence\">Esta RFC<\/a> prop\u00f5e alterar a preced\u00eancia dos operadores, dando a &#8220;.&#8221; uma preced\u00eancia inferior \u00e0 dos operadores &#8220;+&#8221; e &#8220;-&#8220;, para que as adi\u00e7\u00f5es e subtrac\u00e7\u00f5es sejam sempre efectuadas antes da concatena\u00e7\u00e3o da string. Essa linha de c\u00f3digo deve ser equivalente ao seguinte:<\/p>\n<pre><code class=\"language-php\">echo \"sum: \" . ($a + $b);<\/code><\/pre>\n<p>Esta \u00e9 uma proposta em duas etapas:<\/p>\n<ul>\n<li>A partir da vers\u00e3o 7.4, o PHP deve emitir um aviso de obsolesc\u00eancia quando encontrar uma express\u00e3o n\u00e3o inclu\u00edda entre par\u00eanteses com &#8220;+&#8221;, &#8220;-&#8221; e &#8220;.<\/li>\n<li>A mudan\u00e7a real de preced\u00eancia destes operadores deve ser adicionada com o <a href=\"https:\/\/kinsta.com\/pt\/blog\/instalar-php\/\">PHP 8<\/a>.<\/li>\n<\/ul>\n<p>Ambas as propostas foram aprovadas por larga maioria de votos.<\/p>\n<h4>Depreciar operador tern\u00e1rio associativo-esquerdo<\/h4>\n<p>No PHP o operador tern\u00e1rio, ao contr\u00e1rio de muitas outras linguagens, \u00e9 deixado-associativo. De acordo com Nikita Popof, isso pode ser confuso para programadores que alternam entre diferentes linguagens.<\/p>\n<p>Atualmente, em PHP o seguinte c\u00f3digo est\u00e1 correto:<\/p>\n<pre><code class=\"language-php\">$b = $a == 1 ? 'one' : $a == 2 ? 'two' : $a == 3 ? 'three' : 'other';<\/code><\/pre>\n<p>\u00c9 interpretado como:<\/p>\n<pre><code class=\"language-php\">$b = (($a == 1 ? 'one' : $a == 2) ? 'two' : $a == 3) ? 'three' : 'other';<\/code><\/pre>\n<p>E isso pode levar a erros, porque pode n\u00e3o ser o que pretendemos fazer. Assim, esta RFC prop\u00f5e depreciar e remover o uso da associatividade esquerda para operadores tern\u00e1rios e for\u00e7ar os desenvolvedores a usar par\u00eanteses.<\/p>\n<p>Esta \u00e9 outra proposta de duas etapas:<\/p>\n<ul>\n<li>A partir do PHP 7.4, os operadores tern\u00e1rios aninhados sem o uso expl\u00edcito de par\u00eanteses geram um aviso de deprecia\u00e7\u00e3o..<\/li>\n<li><a href=\"https:\/\/kinsta.com\/pt\/blog\/php-8\/\">A partir do PHP 8.0<\/a>, haver\u00e1 um erro de execu\u00e7\u00e3o de compila\u00e7\u00e3o.<\/li>\n<\/ul>\n<p>Esta proposta foi aprovada com 35 a 10 votos a favor.<\/p>\n<h2 class=\"has-anchor-hash\">O que o PHP 7.4 significa para usu\u00e1rios do WordPress?<\/h2>\n<p>O PHP \u00e9 a linguagem de programa\u00e7\u00e3o do lado do servidor mais usada na web. <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/all\/all\">De acordo com a W3Techs<\/a>, em 2 de dezembro de 2019, o uso do PHP \u00e9 usado por 78,9% de todos os sites cuja linguagem de programa\u00e7\u00e3o do lado do servidor eles podem detectar.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<figure id=\"attachment_63301\" aria-describedby=\"caption-attachment-63301\" style=\"width: 1376px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-63301 size-full\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/06\/php-versoes-1.png\" alt=\"Utiliza\u00e7\u00e3o do PHP (Dezembro 2019)\" width=\"1376\" height=\"654\"><figcaption id=\"caption-attachment-63301\" class=\"wp-caption-text\">Utiliza\u00e7\u00e3o do PHP (Dezembro 2019)<\/figcaption><\/figure>\n<p>Infelizmente, <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/5\/all\">o PHP 5 ainda \u00e9 usado por 44.0% de todos os sites<\/a> com uma linguagem de programa\u00e7\u00e3o conhecida do lado do servidor. Se voc\u00ea adicionar <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/7\/all\">o n\u00famero de usu\u00e1rios que ainda usam o PHP 7.0 e 7.1<\/a>, acontece que a grande maioria dos sites est\u00e3o rodando vers\u00f5es n\u00e3o suportadas do PHP.<\/p>\n<figure id=\"attachment_63275\" aria-describedby=\"caption-attachment-63275\" style=\"width: 1726px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-63275 size-full\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2018\/06\/versoe-php-suportadas-wordpress-1.png\" alt=\"Vers\u00f5es PHP suportadas\" width=\"1726\" height=\"332\"><figcaption id=\"caption-attachment-63275\" class=\"wp-caption-text\">Vers\u00f5es PHP suportadas (Fonte da imagem: <a href=\"https:\/\/www.php.net\/supported-versions.php\">Supported Versions<\/a>)<\/figcaption><\/figure>\n<p>De acordo com a <a href=\"https:\/\/wordpress.org\/about\/stats\/\">p\u00e1gina oficial Estat\u00edsticas do WordPress<\/a>, a partir de agora, 64% de todos os sites do WordPress est\u00e3o rodando vers\u00f5es n\u00e3o suportadas do PHP. Apenas um pouco mais de 13% est\u00e3o usando a vers\u00e3o mais recente: <a href=\"https:\/\/kinsta.com\/pt\/changelog\/php-7-3-lancamento-oficial-disponivel-na-kinsta\/\">PHP 7.3<\/a>. E a \u00faltima vers\u00e3o, PHP 7.4, ainda n\u00e3o apareceu. Voc\u00ea pode ver que a grande maioria dos usu\u00e1rios, mais de 23%, ainda est\u00e3o rodando no PHP 5.6.<\/p>\n<figure id=\"attachment_63288\" aria-describedby=\"caption-attachment-63288\" style=\"width: 1390px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-63288\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2017\/03\/wordpress-php-versions-stats-3.png\" alt=\"WordPress PHP version Stats\" width=\"1390\" height=\"1156\"><figcaption id=\"caption-attachment-63288\" class=\"wp-caption-text\">WordPress PHP version Stats<\/figcaption><\/figure>\n<p>Recomendamos vivamente que pe\u00e7a ao seu host uma <a href=\"https:\/\/kinsta.com\/pt\/blog\/versoes-do-php\/\">vers\u00e3o suportada do PHP<\/a>, de prefer\u00eancia de acordo com os <a href=\"https:\/\/wordpress.org\/about\/requirements\/\">requisitos oficiais do WordPress<\/a>. A partir desta escrita, maio de 2019, WordPress requer:<\/p>\n<ul>\n<li>PHP vers\u00e3o 7.3 ou superior.<\/li>\n<li>MySQL vers\u00e3o 5.6 ou superior OU <a href=\"https:\/\/kinsta.com\/pt\/blog\/mariadb-vs-mysql\/\">MariaDB<\/a> vers\u00e3o 10.1 ou superior.<\/li>\n<li>Suporte a HTTPS<\/li>\n<\/ul>\n<h3 class=\"has-anchor-hash\">Desempenho do PHP 7<\/h3>\n<p>Os n\u00fameros acima s\u00e3o especialmente desencorajadores vindo de um ponto de vista de desempenho, j\u00e1 que o PHP 7 mostrou ser significativamente mais r\u00e1pido. Aqui est\u00e3o algumas estat\u00edsticas:<\/p>\n<ul>\n<li><a href=\"http:\/\/talks.php.net\/fluent15#\/wpbench\">Benchmarks<\/a> oficiais do PHP mostram que o PHP 7 permite que o sistema execute duas vezes mais solicita\u00e7\u00f5es por segundo em compara\u00e7\u00e3o com o PHP 5.6, em quase metade da lat\u00eancia.<\/li>\n<li>Christian Vigh tamb\u00e9m publicou uma <a href=\"https:\/\/www.phpclasses.org\/blog\/post\/493-php-performance-evolution.html\">compara\u00e7\u00e3o de performance PHP<\/a> na qual ele descobriu que o PHP 5.2 era 400% mais lento que o PHP 7.<\/li>\n<li>Andrei Avram viu tempos de execu\u00e7\u00e3o mais r\u00e1pidos e <a href=\"https:\/\/blog.andreiavram.ro\/updates-php-performance-increase\/\">menos uso de mem\u00f3ria no PHP 7.4<\/a> versos do PHP 7.3<\/li>\n<li>Phoronix fez alguns <a href=\"https:\/\/phoronix.com\/scan.php?page=news_item&#038;px=PHP-7.4-Early-Benchmarks\">testes iniciais de benchmark com o PHP 7.4 Alpha<\/a> e viu que ele era um pouco mais r\u00e1pido que o PHP 7.3.<\/li>\n<\/ul>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Upgraded my <a href=\"https:\/\/twitter.com\/kinsta?ref_src=twsrc%5Etfw\">@kinsta<\/a> site to PHP 7.4 and it is like 10x faster. Woot!<\/p>\n<p>&mdash; Ronald Huereca (@RonaldHuereca) <a href=\"https:\/\/twitter.com\/RonaldHuereca\/status\/1201513866313777158?ref_src=twsrc%5Etfw\">December 2, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>N\u00f3s rodamos nossos pr\u00f3prios <a href=\"https:\/\/kinsta.com\/pt\/blog\/benchmarks-definitivos-do-php\/\">benchmarks de desempenho PHP<\/a> com PHP 7.3. Vimos que o WordPress 5.0 no PHP 7.3 poderia executar quase tr\u00eas vezes mais transa\u00e7\u00f5es (pedidos) por segundo em compara\u00e7\u00e3o com o PHP 5.6. <strong>Estaremos lan\u00e7ando benchmarks do PHP 7.4 em breve!<\/strong><\/p>\n<figure style=\"width: 940px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2018\/12\/referencias-ordpress-5-0-php.png\" alt=\"Refer\u00eancias do WordPress 5.0 PHP\" width=\"940\" height=\"788\"><figcaption class=\"wp-caption-text\">Refer\u00eancias do WordPress 5.0 PHP<\/figcaption><\/figure>\n<ul>\n<li>WordPress 5.0 PHP 5.6 benchmark: 91,64 req\/sec<\/li>\n<li>Resultados de benchmark do WordPress 5.0 PHP 7.0: 206.71 req\/sec<\/li>\n<li>Resultados de benchmark do WordPress 5.0 PHP 7.1: 210.98 req\/sec<\/li>\n<li>Resultados de benchmark do WordPress 5.0 PHP 7.2: 229.18 req\/sec<\/li>\n<li>WordPress 5.0 <strong>PHP 7.3 resultados de benchmark: 253.20 req\/sec <\/strong>\ud83c\udfc6<\/li>\n<\/ul>\n<p>Muitos s\u00e3o lentos para atualizar simplesmente por causa do tempo envolvido com o teste de novos todos os seus plugins de terceiros e temas para garantir que eles funcionam corretamente. Mas muitas vezes, resume-se ao facto de ainda n\u00e3o o terem feito.<\/p>\n<h3 class=\"has-anchor-hash\">Verificando sua vers\u00e3o PHP<\/h3>\n<p>N\u00e3o tem certeza de qual vers\u00e3o do PHP voc\u00ea est\u00e1 executando? Uma das maneiras mais f\u00e1ceis de verificar \u00e9 usar uma ferramenta como o <a href=\"https:\/\/kinsta.com\/pt\/blog\/teste-de-velocidade-pingdom\/\">Pingdom<\/a> ou o Google Chrome Devtools. O primeiro cabe\u00e7alho do pedido HTTP mostrar\u00e1 tipicamente a vers\u00e3o.<\/p>\n<figure style=\"width: 1542px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/06\/verifique-versao-php-pingdom.png\" alt=\"Verifique a vers\u00e3o PHP em Pingdom\" width=\"1542\" height=\"864\"><figcaption class=\"wp-caption-text\">Verifique a vers\u00e3o PHP em Pingdom<\/figcaption><\/figure>\n<p>Isso depende da m\u00e1quina n\u00e3o modificar o valor do cabe\u00e7alho <code>X-Powered-By<\/code>. No entanto, muitos o fazem por raz\u00f5es de seguran\u00e7a (incluindo Kinsta). Se sim, voc\u00ea pode n\u00e3o ver sua vers\u00e3o do PHP. Nesse caso, se voc\u00ea estiver executando <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-5-2\/\">o WordPress 5.2<\/a> ou superior, h\u00e1 uma nova ferramenta Site Health que voc\u00ea pode usar. V\u00e1 at\u00e9 &#8220;Tools&#8221; \u2192 &#8220;Site Health&#8221; \u2192 &#8220;Info&#8221; e na se\u00e7\u00e3o &#8220;Server&#8221; encontrar\u00e1 a vers\u00e3o PHP do seu servidor.<\/p>\n<figure style=\"width: 1954px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/06\/verifique-versao-php-ferramenta-help.png\" alt=\"Verifique a vers\u00e3o PHP com a ferramenta WordPress Site Health\" width=\"1954\" height=\"720\"><figcaption class=\"wp-caption-text\">Verifique a vers\u00e3o PHP com a ferramenta WordPress Site Health<\/figcaption><\/figure>\n<p>Alternativamente, voc\u00ea pode instalar um plugin gratuito como <a href=\"https:\/\/wordpress.org\/plugins\/version-info\/\">Version Info<\/a>, que mostrar\u00e1 algumas informa\u00e7\u00f5es b\u00e1sicas do servidor no rodap\u00e9 do seu painel de administra\u00e7\u00e3o do WordPress. Algumas outras maneiras de ver sua vers\u00e3o do PHP incluem <a href=\"https:\/\/kinsta.com\/pt\/blog\/versoes-do-php\/\">fazer upload de um arquivo via FTP<\/a>, ou simplesmente chegar ao seu host e perguntar.<\/p>\n<h3 class=\"has-anchor-hash\">Atualizando para PHP 7.4<\/h3>\n<p><strong>A vers\u00e3o final do PHP 7.4 est\u00e1 dispon\u00edvel agora mesmo na Kinsta.<\/strong> Alternativamente, voc\u00ea pode <a href=\"https:\/\/kinsta.com\/pt\/blog\/instalar-wordpress-localmente\/\">testar seu site WordPress localmente<\/a> ou verificar seus scripts em um ambiente como o <a href=\"https:\/\/docs.docker.com\/get-started\/\">Docker<\/a>, que permite que voc\u00ea teste diferentes vers\u00f5es do PHP a partir da linha de comando.<\/p>\n<p>A maneira mais f\u00e1cil de come\u00e7ar a testar \u00e9 <a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/ambiente-de-teste\/\">criar um ambiente de teste<\/a>, pois isso se assemelhar\u00e1 muito ao seu site de produ\u00e7\u00e3o ao vivo. No painel do MyKinsta, clique no seu site e mude para Ambiente de teste.<\/p>\n<figure id=\"attachment_62780\" aria-describedby=\"caption-attachment-62780\" style=\"width: 1557px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-62780 size-full\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/11\/criar-ambiente-desenvolvimento-wordpress.png\" alt=\"Criar ambiente de desenvolvimento do WordPress\" width=\"1557\" height=\"750\"><figcaption id=\"caption-attachment-62780\" class=\"wp-caption-text\">Criar ambiente de teste do WordPress<\/figcaption><\/figure>\n<p>Ent\u00e3o, no menu &#8220;Ferramentas&#8221; mude seu mecanismo PHP para PHP 7.4 (Beta). Voc\u00ea pode ent\u00e3o come\u00e7ar a testar para garantir a compatibilidade do seu c\u00f3digo, plugins de terceiros e temas.<\/p>\n<p>Como nas vers\u00f5es anteriores do PHP, nosso <a href=\"https:\/\/kinsta.com\/pt\/changelog\/base-de-dados-mysql-php-self-healing-firewall-gcp\/#selfhealing-php\">recurso PHP auto-regenerativo<\/a> suporta totalmente o PHP 7.4. Se o PHP cair por qualquer raz\u00e3o, n\u00f3s o reiniciamos automaticamente. Se o rein\u00edcio n\u00e3o resolver o problema, nosso sistema de monitoramento alertar\u00e1 nossa <a href=\"https:\/\/kinsta.com\/pt\/blog\/sysadmin\/\">equipe de administra\u00e7\u00e3o de sistemas<\/a> para investigar a causa do problema.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Mesmo que esta seja uma vers\u00e3o est\u00e1vel, ainda <strong>encorajamos todos a testar o PHP 7.4<\/strong> antes de us\u00e1-lo em seu site de produ\u00e7\u00e3o (ao vivo).<\/p>\n<\/aside>\n\n<figure id=\"attachment_63243\" aria-describedby=\"caption-attachment-63243\" style=\"width: 1565px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-63243 size-full\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/12\/alterar-para-php-7.4.png\" alt=\"Alterar para PHP 7.4\" width=\"1565\" height=\"990\"><figcaption id=\"caption-attachment-63243\" class=\"wp-caption-text\">Alterar para PHP 7.4<\/figcaption><\/figure>\n<p>Veja detalhes sobre o <a href=\"https:\/\/kinsta.com\/pt\/changelog\/php-7-4\/\">lan\u00e7amento do PHP 7.4 na Kinsta<\/a>.<\/p>\n<h3>Instalando e executando o PHP 7.4 no Docker<\/h3>\n<p>Queres testar no Docker? Felizmente, voc\u00ea n\u00e3o precisa compilar e configurar o PHP 7.4 manualmente. Se voc\u00ea j\u00e1 tem o Docker instalado em seu sistema, voc\u00ea s\u00f3 precisa instalar o <a href=\"https:\/\/github.com\/devilbox\/docker-php-fpm-7.4\">Docker Image n\u00e3o oficial do PHP-FPM 7.4<\/a> e executar seus testes a partir da linha de comando em poucos segundos.<\/p>\n<p>\u00a0<\/p>\n<figure style=\"width: 570px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/05\/instalando-imagem-nginx-docker.png\" alt=\"Instalando a imagem do Nginx Docker\" width=\"570\" height=\"365\"><figcaption class=\"wp-caption-text\">Instalando a imagem do Nginx Docker<\/figcaption><\/figure>\n<p>Se voc\u00ea preferir executar seu c\u00f3digo PHP 7.4 em seu navegador, voc\u00ea tamb\u00e9m precisa instalar uma imagem <a href=\"https:\/\/kinsta.com\/pt\/blog\/nginx-vs-apache\/\">Nginx ou Apache<\/a>. Mas n\u00e3o se preocupe. Basta seguir as <a href=\"https:\/\/github.com\/devilbox\/docker-php-fpm-7.4#example\">instru\u00e7\u00f5es do desenvolvedor<\/a>. Copie e cole os comandos da p\u00e1gina Docker Image para a sua ferramenta de linha de comando, e voc\u00ea est\u00e1 pronto para come\u00e7ar.<\/p>\n\n<h2>Resumo<\/h2>\n<p>Neste artigo, cobrimos um bom n\u00famero de mudan\u00e7as e adi\u00e7\u00f5es que podemos esperar com o lan\u00e7amento do PHP 7.4. Se voc\u00ea est\u00e1 procurando a lista completa de recursos, junto com a documenta\u00e7\u00e3o oficial da RFC, confira os seguintes recursos:<\/p>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc#php_74\">PHP 7.4 Solicita\u00e7\u00f5es de coment\u00e1rios<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-7.4\/UPGRADING\">Notas de Atualiza\u00e7\u00e3o do PHP 7.4<\/a><\/li>\n<li><a href=\"https:\/\/wiki.php.net\/todo\/php74\">PHP 7.4 Tarefas de Prepara\u00e7\u00e3o<\/a><\/li>\n<\/ul>\n<p>Vamos mant\u00ea-lo atualizado com todas as \u00faltimas informa\u00e7\u00f5es sobre o PHP 7.4. Se voc\u00ea \u00e9 um cliente Kinsta, voc\u00ea j\u00e1 pode come\u00e7ar a mover seus sites do WordPress para a vers\u00e3o mais recente.<\/p>\n<p>Voc\u00ea est\u00e1 pronto para <a href=\"https:\/\/kinsta.com\/pt\/blog\/instalar-php\/\">instalar e testar os pr\u00f3ximos recursos do PHP<\/a>? Qual deles \u00e9 o seu favorito? Compartilhe suas id\u00e9ias conosco nos coment\u00e1rios abaixo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP 7.4, a pr\u00f3xima vers\u00e3o menor do PHP 7, foi lan\u00e7ada em 28 de novembro de 2019. Ent\u00e3o \u00e9 hora de mergulharmos em algumas das mais &#8230;<\/p>\n","protected":false},"author":36,"featured_media":29592,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[32,44],"topic":[998],"class_list":["post-29579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-php","tag-webdev","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>O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)<\/title>\n<meta name=\"description\" content=\"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!\" \/>\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\/php-7-4\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)\" \/>\n<meta property=\"og:description\" content=\"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/\" \/>\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=\"2019-10-07T15:33:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-26T13:10:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/11\/PT-Homepage-featured-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/wp-content\/uploads\/2019\/06\/php-7.4.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\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\/php-7-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)\",\"datePublished\":\"2019-10-07T15:33:53+00:00\",\"dateModified\":\"2025-02-26T13:10:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/\"},\"wordCount\":3676,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg\",\"keywords\":[\"php\",\"webdev\"],\"articleSection\":[\"Desenvolvimento WordPress\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/\",\"name\":\"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg\",\"datePublished\":\"2019-10-07T15:33:53+00:00\",\"dateModified\":\"2025-02-26T13:10:19+00:00\",\"description\":\"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg\",\"width\":1460,\"height\":730,\"caption\":\"O que h\u00e1 de novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Atualiza\u00e7\u00f5es do PHP\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/atualizacoes-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)\"}]},{\"@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\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)","description":"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!","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\/php-7-4\/","og_locale":"pt_PT","og_type":"article","og_title":"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)","og_description":"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!","og_url":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2019-10-07T15:33:53+00:00","article_modified_time":"2025-02-26T13:10:19+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/11\/PT-Homepage-featured-image.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!","twitter_image":"https:\/\/kinsta.com\/wp-content\/uploads\/2019\/06\/php-7.4.jpg","twitter_creator":"@carlodaniele","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Carlo Daniele","Tempo estimado de leitura":"19 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)","datePublished":"2019-10-07T15:33:53+00:00","dateModified":"2025-02-26T13:10:19+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/"},"wordCount":3676,"commentCount":2,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg","keywords":["php","webdev"],"articleSection":["Desenvolvimento WordPress"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/","url":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/","name":"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg","datePublished":"2019-10-07T15:33:53+00:00","dateModified":"2025-02-26T13:10:19+00:00","description":"O PHP 7.4 est\u00e1 vindo com novas funcionalidades, deprecia\u00e7\u00f5es e um aumento na performance. Confira esta vis\u00e3o geral do que h\u00e1 de novo no PHP 7.4!","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/php-7-4\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2019\/10\/php-7-4.jpg","width":1460,"height":730,"caption":"O que h\u00e1 de novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/php-7-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Atualiza\u00e7\u00f5es do PHP","item":"https:\/\/kinsta.com\/pt\/topicos\/atualizacoes-php\/"},{"@type":"ListItem","position":3,"name":"O Que H\u00e1 de Novo no PHP 7.4 (Recursos, Deprecia\u00e7\u00f5es, Velocidade)"}]},{"@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\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/pt\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/29579","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\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=29579"}],"version-history":[{"count":16,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/29579\/revisions"}],"predecessor-version":[{"id":71276,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/29579\/revisions\/71276"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/it"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/nl"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/es"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/dk"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/jp"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/de"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/se"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/translations\/pt"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/29579\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/29592"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=29579"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=29579"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=29579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}