Commit:    580ebcc46597c48307ce3d592b26f6ff8bfdc3a5
Author:    Roman Pronskiy <ro...@pronskiy.com>         Fri, 20 Nov 2020 
12:16:46 +0200
Committer: Sara Golemon <poll...@php.net>      Wed, 25 Nov 2020 20:28:13 +0000
Parents:   d491372994d2bc4bdb93f20b94b9a5a78b006882
Branches:  master

Link:       
http://git.php.net/?p=web/php.git;a=commitdiff;h=580ebcc46597c48307ce3d592b26f6ff8bfdc3a5

Log:
Add pt_BR page fro PHP 8 release

Changed paths:
  M  include/layout.inc
  A  releases/8_0_x_pt_BR.php

diff --git a/include/layout.inc b/include/layout.inc
index 57c8d766a..e994ebe91 100644
--- a/include/layout.inc
+++ b/include/layout.inc
@@ -698,7 +698,7 @@ function doc_toc_title($lang, $index, $file, $elm = "dt") {
 function release_language_chooser($currentlang) {
     $LANGUAGES = array(
         'en'    => 'English',
-//        'pt_BR' => 'Brazilian Portuguese',
+        'pt_BR' => 'Brazilian Portuguese',
 //        'zh'    => 'Chinese (Simplified)',
 //        'nl'    => 'Dutch',
 //        'fr'    => 'French',
diff --git a/releases/8_0_x_pt_BR.php b/releases/8_0_x_pt_BR.php
new file mode 100644
index 000000000..e98e8f3e6
--- /dev/null
+++ b/releases/8_0_x_pt_BR.php
@@ -0,0 +1,479 @@
+<?php
+$_SERVER['BASE_PAGE'] = 'releases/8_0_x.php';
+include_once __DIR__ . '/../include/prepend.inc';
+
+if ($LANG === 'en') {
+    mirror_redirect("/releases/8_0_x.php?lang=$LANG");
+    exit();
+}
+
+if ($LANG !== 'pt_BR' && file_exists("8_0_x_$LANG.php")) {
+    mirror_redirect("/releases/8_0_x_$LANG.php?lang=$LANG");
+    exit();
+}
+
+site_header("PHP 8.0.0 Release Announcement", array(
+    "current" => "php_8_0_x",
+    'css' => array('php8.css'),
+    'meta_tags' => array(
+        'og:image' => $MYSITE . 'images/php8/php_8_released.png'
+    )
+));
+?>
+    <section class="php8-section php8-section_dark php8-section_header center">
+        <div class="page-tools">
+            <div class="change-language">
+                <?php echo release_language_chooser($LANG); ?>
+            </div>
+        </div>
+        <div class="php8-section__content">
+            <div class="php8-logo">
+                <img src="/images/php8/logo_php8.svg" alt="php8" height="126" 
width="343">
+            </div>
+            <div class="php8-title">released!</div>
+            <div class="php8-subtitle">
+                PHP 8.0 é uma atualização importante da linguagem PHP. <br 
class="display-none-md"> Ela contém muitos novos
+                recursos e otimizações, incluindo argumentos nomeados, união 
de tipos, atributos, promoção de propriedade do
+                construtor, expressão match, operador nullsafe, JIT e 
melhorias no sistema de tipos, tratamento de
+                erros e consistência.
+            </div>
+            <div class="php8-button-wrapper center">
+                <a class="php8-button php8-button_light" href="#">Atualize 
para o PHP 8!</a>
+            </div>
+        </div>
+    </section>
+
+    <section class="php8-section center">
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="named-arguments">
+                Argumentos nomeados
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/named_params";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+                        <pre>htmlspecialchars($string, ENT_COMPAT | 
ENT_HTML401, 'UTF-8', false);</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+                        <pre>htmlspecialchars($string, double_encode: 
false);</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <ul>
+                    <li>Especifique apenas os parâmetros obrigatórios, 
ignorando os opcionais.</li>
+                    <li>Os argumentos são independentes da ordem e 
autodocumentados.</li>
+                </ul>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="attributes">
+                Atributos
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/attributes_v2";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+<pre>/**
+* @Route("/api/posts/{id}", methods={"GET", "HEAD"})
+*/
+classUser
+{</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+<pre>#[Route("/api/posts/{id}", methods: ["GET", "HEAD"])]
+class User
+{</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <p>Em vez de anotações PHPDoc, agora você pode usar metadados 
estruturados com sintaxe PHP nativa.</p>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="constructor-property-promotion">
+                Promoção de propriedade de construtor
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/constructor_promotion";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+<pre>class Point {
+ public float $x;
+ public float $y;
+ public float $z;
+
+ public function __construct(
+     float $x = 0.0,
+     float $y = 0.0,
+     float $z = 0.0,
+ ) {
+     $this->x = $x;
+     $this->y = $y;
+     $this->z = $z;
+ }
+}</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+<pre>class Point {
+ public function __construct(
+     public float $x = 0.0,
+     public float $y = 0.0,
+     public float $z = 0.0,
+ ) {}
+}</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <p>Menos código para definir e inicializar propriedades.</p>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="union-types">
+                União de tipos
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/union_types_v2";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+<pre>class Number {
+ /** @var int|float */
+ private $number;
+
+ /**
+  * @param float|int $number
+  */
+ public function __construct($number) {
+     $this->number = $number;
+ }
+}
+
+new Number('NaN'); // Ok</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+<pre>class Number {
+ public function __construct(
+     private int|float $number
+ ) {}
+}
+
+new Number('NaN'); // TypeError</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <p>Em vez de anotações PHPDoc para uma combinação de tipos, 
você pode usar declarações de união de tipos nativa
+                    que são validados em tempo de execução.</p>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="match-expression">
+                Expressão match
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/match_expression_v2";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+<pre>switch (8.0) {
+ case '8.0':
+   $result = "Oh no!";
+   break;
+ case 8.0:
+   $result = "This is what I expected";
+   break;
+}
+echo $result;
+//> Oh no!</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+<pre>echo match (8.0) {
+ '8.0' => "Oh no!",
+ 8.0 => "This is what I expected",
+};
+//> This is what I expected</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <p>A nova expressão match é semelhante ao switch e tem os 
seguintes recursos:</p>
+                <ul>
+                    <li>Match é uma expressão, o que significa que seu 
resultado pode ser armazenado em uma variável ou
+                        retornado.</li>
+                    <li>Match suporta apenas expressões de uma linha e não 
precisa de uma declaração break;.</li>
+                    <li>Match faz comparações estritas.</li>
+                </ul>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="nullsafe-operator">
+                Operador nullsafe
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/nullsafe_operator";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+<pre>$country =  null;
+
+if ($session !== null) {
+ $user = $session->user;
+
+ if ($user !== null) {
+     $address = $user->getAddress();
+
+     if ($address !== null) {
+         $country = $address->country;
+     }
+ }
+}</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+                        <pre>$country = 
$session?->user?->getAddress()?->country;</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <p>Em vez de verificar condições nulas, agora você pode usar 
uma cadeia de chamadas com o novo operador nullsafe.
+                    Quando a avaliação de um elemento da cadeia falha, a 
execução de toda a cadeia é abortada e toda a cadeia é
+                    avaliada como nula.</p>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" id="saner-string-to-number-comparisons">
+                Comparações mais claras entre strings e números
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/string_to_number_comparison";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+                        <pre>0 == 'foobar' // true</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+                        <pre>0 == 'foobar' // false</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <p>Ao comparar com uma string numérica, o PHP 8 usa uma 
comparação numérica. Caso contrário, ele converte o
+                    número em uma string e usa uma comparação de string.</p>
+            </div>
+        </div>
+
+        <div class="php8-compare">
+            <h2 class="php8-h2" 
id="consistent-type-errors-for-internal-functions">
+                Erros consistentes para tipos de dados em funções internas
+                <a class="php8-rfc" 
href="https://wiki.php.net/rfc/consistent_type_errors";>RFC</a>
+            </h2>
+            <div class="php8-compare__main">
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label">PHP 7</div>
+                    <div class="php8-code phpcode">
+<pre>strlen([]); // Warning: strlen() expects parameter 1 to be string, array 
given
+
+array_chunk([], -1); // Warning: array_chunk(): Size parameter expected to be 
greater than 0</pre>
+                    </div>
+                </div>
+                <div class="php8-compare__arrow"></div>
+                <div class="php8-compare__block example-contents">
+                    <div class="php8-compare__label 
php8-compare__label_new">PHP 8</div>
+                    <div class="php8-code phpcode">
+<pre>strlen([]); // TypeError: strlen(): Argument #1 ($str) must be of type 
string, array given
+
+array_chunk([], -1); // ValueError: array_chunk(): Argument #2 ($length) must 
be greater than 0</pre>
+                    </div>
+                </div>
+            </div>
+            <div class="php8-compare__content">
+                <p>A maioria das funções internas agora lança uma exceção 
Fatal Error se a validação do parâmetro falhar.</p>
+            </div>
+        </div>
+    </section>
+
+    <section class="php8-section php8-section_light">
+        <h2 class="php8-h2">Compilação Just-In-Time</h2>
+        <p>
+            PHP 8 apresenta dois engines de compilação JIT. Tracing JIT, o 
mais promissor dos dois, mostra desempenho cerca de
+            3 vezes melhor em benchmarks sintéticos e melhoria de 1,5 a 2 
vezes em alguns aplicativos específicos de longa
+            execução. O desempenho típico das aplicações está no mesmo nível 
do PHP 7.4.
+        </p>
+        <p>
+            <img src="/images/php8/jit.png" alt="Just-In-Time compilation">
+        </p>
+
+        <h2 class="php8-h2 php8-h2_margin-top">Outros ajustes e melhorias de 
sintaxe</h2>
+        <div class="php8-columns">
+            <div class="php8-column">
+                <ul>
+                    <li>
+                        Permitir vírgula no final da lista de parâmetros
+                        <a 
href="https://wiki.php.net/rfc/trailing_comma_in_parameter_list";>RFC</a> e 
listas de uso em closures
+                        <a 
href="https://wiki.php.net/rfc/trailing_comma_in_closure_use_list";>RFC</a>.
+                    </li>
+                    <li>
+                        Catches sem captura de exceção <a 
href="http://TODO";>RFC</a>.
+                    </li>
+                    <li>
+                        Ajustes de sintaxe para variáveis <a 
href="https://wiki.php.net/rfc/variable_syntax_tweaks";>RFC</a>.
+                    </li>
+                </ul>
+            </div>
+            <div class="php8-column">
+                <ul>
+                    <li>
+                        Tratamento de nomes de namespace como token único
+                        <a 
href="https://wiki.php.net/rfc/namespaced_names_as_token";>RFC</a>.
+                    </li>
+                    <li>
+                        Throw como expressão <a 
href="https://wiki.php.net/rfc/throw_expression";>RFC</a>.
+                    </li>
+                    <li>
+                        Permitir ::class em objetos <a 
href="https://wiki.php.net/rfc/class_name_literal_on_object";>RFC</a>.
+                    </li>
+                </ul>
+            </div>
+        </div>
+        <div class="php8-columns">
+            <div class="php8-column">
+                <h2 class="php8-h2 php8-h2_margin-top">Melhorias no sistema de 
tipo e tratamento de erros</h2>
+                <ul>
+                    <li>
+                        Verificações de tipo mais rígidas para operadores 
aritméticos / bit a bit
+                        <a 
href="https://wiki.php.net/rfc/arithmetic_operator_type_checks";>RFC</a>.
+                    </li>
+                    <li>
+                        Validação de método abstrato em traits <a 
href="https://wiki.php.net/rfc/abstract_trait_method_validation";>RFC</a>.
+                    </li>
+                    <li>
+                        Assinaturas corretas de métodos mágicos <a 
href="https://wiki.php.net/rfc/magic-methods-signature";>RFC</a>
+                    </li>
+                    <li>
+                        Avisos de engine reclassificados <a 
href="https://wiki.php.net/rfc/engine_warnings";>RFC</a>.
+                    </li>
+                    <li>
+                        Erro fatal para assinaturas de método incompatíveis <a 
href="https://wiki.php.net/rfc/lsp_errors";>RFC</a>.
+                    </li>
+                    <li>
+                        O operador @ não silencia mais os erros fatais.
+                    </li>
+                    <li>
+                        Herança com métodos privados <a 
href="https://wiki.php.net/rfc/inheritance_private_methods";>RFC</a>.
+                    </li>
+                    <li>
+                        Tipo mixed <a 
href="https://wiki.php.net/rfc/mixed_type_v2";>RFC</a>.
+                    </li>
+                    <li>
+                        Tipo de retorno static <a href="">RFC</a>.
+                    </li>
+                    <li>
+                        Tipagem de funções internas
+                        <a href="https://externals.io/message/106522";>RFC</a>.
+                    </li>
+                    <li>
+                        Objetos curl em vez de recursos
+                        <a 
href="https://php.watch/versions/8.0/resource-CurlHandle";>RFC</a>.
+                    </li>
+                </ul>
+            </div>
+            <div class="php8-column">
+                <h2 class="php8-h2 php8-h2_margin-top">Novas classes, 
interfaces e funções</h2>
+                <ul>
+                    <li>
+                        Classe <a 
href="https://wiki.php.net/rfc/weak_maps";>Weak Map</a>
+                    </li>
+                    <li>
+                        Interface <a 
href="https://wiki.php.net/rfc/stringable";>Stringable</a>
+                    </li>
+                    <li>
+                        <a 
href="https://wiki.php.net/rfc/str_contains";>str_contains()</a>,
+                        <a 
href="https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions";>str_starts_with()</a>,
+                        <a 
href="https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions";>str_ends_with()</a>
+                    </li>
+                    <li>
+                        <a 
href="https://github.com/php/php-src/pull/4769";>fdiv()</a>
+                    </li>
+                    <li>
+                        <a 
href="https://wiki.php.net/rfc/get_debug_type";>get_debug_type()</a>
+                    </li>
+                    <li>
+                        <a 
href="https://github.com/php/php-src/pull/5427";>get_resource_id()</a>
+                    </li>
+                    <li>
+                        <a 
href="https://wiki.php.net/rfc/token_as_object";>token_get_all()</a> 
implementado com objetos
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </section>
+
+    <section class="php8-section php8-section_dark php8-section_footer 
php8-footer">
+        <div class="php8-section__content">
+            <h2 class="php8-h2 center">
+                Obtenha melhoria de desempenho gratuita.<br 
class="display-none-lg display-block-md">
+                Obtenha melhor sintaxe.<br class="display-block-lg 
display-none-md display-block-sm">
+                Obtenha mais segurança de tipos.
+            </h2>
+            <div class="php8-button-wrapper center">
+                <a class="php8-button php8-button_light" href="#">Atualize 
para o PHP 8!</a>
+            </div>
+            <div class="php8-footer__content">
+                <p>
+                    Para downloads de código-fonte do PHP 8, visite a página de
+                    <a href="http://www.php.net/downloads";>downloads</a>.
+                    Os binários do Windows podem ser encontrados na página <a 
href="http://windows.php.net/download";>PHP para
+                        Windows</a>.
+                    A lista de mudanças é registrada no <a 
href="http://www.php.net/ChangeLog-8.php";>ChangeLog</a>.
+                </p>
+                <p>
+                    O <a href="http://php.net/manual/en/migration8.php";>guia 
de migração</a> está disponível no Manual do PHP.
+                    Consulte-o para obter uma lista detalhada de novos 
recursos e alterações incompatíveis com versões anteriores.
+                </p>
+            </div>
+        </div>
+    </section>
+
+
+
+
+<?php site_footer();
\ No newline at end of file
-- 
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to