Commit: f2407335ed9f1156a8428429342211db98bb4311
Author: George Peter Banyard <[email protected]> Thu, 26 Nov 2020
14:34:38 +0000
Parents: 9a8f7c6e54172644e284357bcaf0779e97f20664
Branches: master
Link:
http://git.php.net/?p=web/php.git;a=commitdiff;h=f2407335ed9f1156a8428429342211db98bb4311
Log:
French translation of the PHP 8 announcement page
Changed paths:
M include/layout.inc
A releases/8.0/fr.php
diff --git a/include/layout.inc b/include/layout.inc
index 4c82a9a08..e9cededab 100644
--- a/include/layout.inc
+++ b/include/layout.inc
@@ -712,6 +712,7 @@ function release_language_chooser($currentlang) {
'en' => 'English',
'pt_BR' => 'Brazilian Portuguese',
'de' => 'German',
+ 'fr' => 'French',
'ru' => 'Russian',
);
diff --git a/releases/8.0/fr.php b/releases/8.0/fr.php
new file mode 100644
index 000000000..6cfd85ec6
--- /dev/null
+++ b/releases/8.0/fr.php
@@ -0,0 +1,523 @@
+<?php
+$_SERVER['BASE_PAGE'] = 'releases/8.0/en.php';
+include_once __DIR__ . '/../../include/prepend.inc';
+
+if (($LANG !== 'fr') && file_exists(__DIR__ . '/' . basename($LANG) . '.php'))
{
+ mirror_redirect('/releases/8.0/' . urlencode($LANG) . '.php?lang=' .
urlencode($LANG));
+}
+
+$meta_image_path = $MYSITE . 'images/php8/php_8_released.png';
+$meta_description = "PHP 8.0 est une mise à jour majeure du langage PHP. Elle
contient beaucoup de nouvelle fonctionnalités et d'optimisations, incluant les
arguments nommées, les types d'union, attributs, promotion de propriétés de
constructeur, l'expression match, l'opérateur nullsafe, JIT (Compilation à la
Volée), et des améliorations dans le système de typage, la gestion d'erreur, et
de cohérence.";
+site_header("Annonce de la Sortie de PHP 8.0.0", array(
+ "current" => "php8",
+ 'css' => array('php8.css'),
+ 'meta_tags' => <<<META
+<meta name="twitter:card" content="summary_large_image" />
+<meta name="twitter:site" content="@official_php" />
+<meta name="twitter:title" content="PHP 8.0 Released" />
+<meta name="twitter:description" content="{$meta_description}" />
+<meta name="twitter:creator" content="@official_php" />
+<meta name="twitter:image:src" content="{$meta_image_path}" />
+
+<meta itemprop="name" content="PHP 8.0 Released" />
+<meta itemprop="description" content="{$meta_description}" />
+<meta itemprop="image" content="{$meta_image_path}" />
+
+<meta property="og:image" content="{$meta_image_path}" />
+<meta property="og:description" content="{$meta_description}" />
+META
+));
+?>
+<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 est une mise à jour majeure du langage PHP.<br
class="display-none-md">
+ Elle contient beaucoup de nouvelle fonctionnalités et d'optimisations,
incluant les arguments nommées,
+ les types d'union, attributs, promotion de propriétés de constructeur,
l'expression match, l'opérateur
+ nullsafe, JIT (Compilation à la Volée), et des améliorations dans le
système de typage, la gestion
+ d'erreur, et de cohérence.
+ </div>
+ <div class="php8-button-wrapper center">
+ <a class="php8-button php8-button_light" href="/downloads">Migrez à PHP
8 maintenant!</a>
+ </div>
+ </div>
+</section>
+
+<section class="php8-section center">
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="named-arguments">
+ Arguments nommées
+ <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">
+ <?php highlight_php_trimmed(
+ 'htmlspecialchars($string, ENT_COMPAT | ENT_HTML401,
\'UTF-8\', false);'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ 'htmlspecialchars($string, double_encode: false);'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <ul>
+ <li>Spécifiez uniquement les paramètres requis, omettant ceux
optionnels.</li>
+ <li>Les arguments sont indépendant de l'ordre et auto-documenté.</li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="attributes">
+ Attributs
+ <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">
+ <?php highlight_php_trimmed(
+ '/**
+* @Route("/api/posts/{id}", methods={"GET", "HEAD"})
+*/
+class User
+{'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ '#[Route("/api/posts/{id}", methods: ["GET", "HEAD"])]
+class User
+{'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <p>Au lieux d'annotations PHPDoc, vous pouvez désormais utiliser les
métadonnées structurés avec la syntaxe native de PHP.</p>
+ </div>
+ </div>
+
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="constructor-property-promotion">
+ Promotion de propriétés de constructeur
+ <a class="php8-rfc"
href="https://wiki.php.net/rfc/constructor_promotion">RFC</a> <a
class="php8-rfc"
href="/manual/fr/language.oop5.decon.php#language.oop5.decon.constructor.promotion">Doc</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">
+ <?php highlight_php_trimmed(
+ '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;
+ }
+}'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ 'class Point {
+ public function __construct(
+ public float $x = 0.0,
+ public float $y = 0.0,
+ public float $z = 0.0,
+ ) {}
+}'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <p>Moins de code redondant pour définir et initialiser les
propriétés.</p>
+ </div>
+ </div>
+
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="union-types">
+ Types d'union
+ <a class="php8-rfc"
href="https://wiki.php.net/rfc/union_types_v2">RFC</a> <a class="php8-rfc"
href="/manual/fr/language.types.declarations.php#language.types.declarations.union">Doc</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">
+ <?php highlight_php_trimmed(
+ 'class Number {
+ /** @var int|float */
+ private $number;
+
+ /**
+ * @param float|int $number
+ */
+ public function __construct($number) {
+ $this->number = $number;
+ }
+}
+
+new Number(\'NaN\'); // Ok'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ 'class Number {
+ public function __construct(
+ private int|float $number
+ ) {}
+}
+
+new Number(\'NaN\'); // TypeError'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <p>
+ Au lieux d'annotation PHPDoc pour une combinaison de type, vous
pouvez utiliser les déclarations de types
+ d'union native qui sont validées lors de l'exécution.
+ </p>
+ </div>
+ </div>
+
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="match-expression">
+ Expression match
+ <a class="php8-rfc"
href="https://wiki.php.net/rfc/match_expression_v2">RFC</a> <a class="php8-rfc"
href="/manual/fr/control-structures.match.php">Doc</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">
+ <?php highlight_php_trimmed(
+ 'switch (8.0) {
+ case \'8.0\':
+ $result = "Oh no!";
+ break;
+ case 8.0:
+ $result = "This is what I expected";
+ break;
+}
+echo $result;
+//> Oh no!'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ 'echo match (8.0) {
+ \'8.0\' => "Oh no!",
+ 8.0 => "This is what I expected",
+};
+//> This is what I expected'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <p>La nouvelle instruction match est similaire à switch et a les
fonctionnalités suivantes :</p>
+ <ul>
+ <li>Match est une expression, signifiant que son résultat peut être
enregistré dans une variable ou retourné.</li>
+ <li>Les branches de match supporte uniquement les expressions d'une
seule ligne, et n'a pas besoin d'une déclaration break;.</li>
+ <li>Match fait des comparaisons strictes.</li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="nullsafe-operator">
+ Opérateur 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">
+ <?php highlight_php_trimmed(
+ '$country = null;
+
+if ($session !== null) {
+ $user = $session->user;
+
+ if ($user !== null) {
+ $address = $user->getAddress();
+
+ if ($address !== null) {
+ $country = $address->country;
+ }
+ }
+}'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ '$country = $session?->user?->getAddress()?->country;'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <p>
+ Au lieux de faire des vérifications conditionnelles de nul, vous
pouvez utilisé une chaîne d'appel
+ avec le nouvel opérateur nullsafe. Qui lorsque l'évaluation d'un
élément de la chaîne échoue, l'exécution
+ de la chaîne complète est terminé et la chaîne entière évalue à null.
+ </p>
+ </div>
+ </div>
+
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="saner-string-to-number-comparisons">
+ Comparaisons entre les chaînes de caractères et les nombres plus saines
+ <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">
+ <?php highlight_php_trimmed(
+ '0 == \'foobar\' // true'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ '0 == \'foobar\' // false'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <p>
+ Lors de la comparaison avec une chaîne numérique, PHP 8 utilisé une
comparaison de nombre.
+ Sinon, il convertie le nombre à une chaîne de caractère et utilise
une comparaison de chaîne de caractères.
+ </p>
+ </div>
+ </div>
+
+ <div class="php8-compare">
+ <h2 class="php8-h2" id="consistent-type-errors-for-internal-functions">
+ Erreurs de type cohérent pour les fonctions internes
+ <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">
+ <?php highlight_php_trimmed(
+ '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'
+ );?>
+ </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">
+ <?php highlight_php_trimmed(
+ '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'
+ );?>
+ </div>
+ </div>
+ </div>
+ <div class="php8-compare__content">
+ <p>La plupart des fonctions internes lance désormais une exception Error
si la validation du paramètre échoue.</p>
+ </div>
+ </div>
+</section>
+
+<section class="php8-section php8-section_light">
+ <h2 class="php8-h2">Compilation Juste-à-Temps (JIT)</h2>
+ <p>
+ PHP 8 introduit deux moteur de compilation JIT (juste à temps/compilation
à la volée).
+ Le Tracing JIT, le plus prometteur des deux, montre environ 3 fois plus de
performances sur des benchmarks
+ synthétiques et 1,5-2 fois plus de performances sur certaines applications
à longue durée d'exécution.
+ Généralement les performances des applications sont identique à PHP 7.4.
+ </p>
+ <h3 class="php8-h3">
+ Contribution relative du JIT à la performance de PHP 8
+ </h3>
+ <p>
+ <img src="/images/php8/scheme.svg" width="900" alt="Just-In-Time
compilation">
+ </p>
+
+ <div class="php8-columns">
+ <div class="php8-column">
+ <h2 class="php8-h2 php8-h2_margin-top">Amélioration du système de typage
et de la gestion d'erreur</h2>
+ <ul>
+ <li>
+ Vérification de type plus sévère pour les opérateurs arithmétique
et bit à bit
+ <a
href="https://wiki.php.net/rfc/arithmetic_operator_type_checks">RFC</a>
+ </li>
+ <li>
+ Validation de méthode abstraite des traits <a
href="https://wiki.php.net/rfc/abstract_trait_method_validation">RFC</a>
+ </li>
+ <li>
+ Signature valide des méthodes magiques <a
href="https://wiki.php.net/rfc/magic-methods-signature">RFC</a>
+ </li>
+ <li>
+ Reclassifications des avertissements du moteur <a
href="https://wiki.php.net/rfc/engine_warnings">RFC</a>
+ </li>
+ <li>
+ Erreur fatale pour des signatures de méthodes incompatibles <a
href="https://wiki.php.net/rfc/lsp_errors">RFC</a>
+ </li>
+ <li>
+ L'opérateur @ ne silence plus les erreurs fatales.
+ </li>
+ <li>
+ Héritages avec les méthodes privées <a
href="https://wiki.php.net/rfc/inheritance_private_methods">RFC</a>
+ </li>
+ <li>
+ Type mixed <a href="https://wiki.php.net/rfc/mixed_type_v2">RFC</a>
+ </li>
+ <li>
+ Type de retour static <a
href="https://wiki.php.net/rfc/static_return_type">RFC</a>
+ </li>
+ <li>
+ Types pour les fonctions internes
+ <a href="https://externals.io/message/106522">Discussion e-mail</a>
+ </li>
+ <li>
+ Objets opaques au lieu de ressources pour les extensions
+ <a
href="https://php.watch/versions/8.0/resource-CurlHandle">Curl</a>,
+ <a href="https://php.watch/versions/8.0/gdimage">Gd</a>,
+ <a
href="https://php.watch/versions/8.0/sockets-sockets-addressinfo">Sockets</a>,
+ <a
href="https://php.watch/versions/8.0/OpenSSL-resource">OpenSSL</a>,
+ <a
href="https://php.watch/versions/8.0/xmlwriter-resource">XMLWriter</a>, et
+ <a href="https://php.watch/versions/8.0/xmlwriter-resource">XML</a>
+ </li>
+ </ul>
+ </div>
+ <div class="php8-column">
+ <h2 class="php8-h2 php8-h2_margin-top">Autres ajustement de syntaxes et
améliorations</h2>
+ <ul>
+ <li>
+ Autorisation des virgules trainantes dans les listes de paramètres
<a href="https://wiki.php.net/rfc/trailing_comma_in_parameter_list">RFC</a>
+ et dans les listes des use d'une fermeture <a
href="https://wiki.php.net/rfc/trailing_comma_in_closure_use_list">RFC</a>
+ </li>
+ <li>
+ Les catchs non capturant <a
href="https://wiki.php.net/rfc/non-capturing_catches">RFC</a>
+ </li>
+ <li>
+ Ajustement de la Syntaxe des Variables <a
href="https://wiki.php.net/rfc/variable_syntax_tweaks">RFC</a>
+ </li>
+ <li>
+ Traite les noms des espaces de nom comme un seul token <a
href="https://wiki.php.net/rfc/namespaced_names_as_token">RFC</a>
+ </li>
+ <li>
+ Throw est désormais une expression <a
href="https://wiki.php.net/rfc/throw_expression">RFC</a>
+ </li>
+ <li>
+ Autorisation de ::class sur les objets <a
href="https://wiki.php.net/rfc/class_name_literal_on_object">RFC</a>
+ </li>
+ </ul>
+
+ <h2 class="php8-h2 php8-h2_margin-top">Nouvelles Classes, Interfaces, et
Fonctions</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>
+ Implémentation objet de <a
href="https://wiki.php.net/rfc/token_as_object">token_get_all()</a>
+ </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">
+ Meilleurs performances, meilleur syntaxe, amélioration de la sécurité de
type.
+ </h2>
+ <div class="php8-button-wrapper center">
+ <a class="php8-button php8-button_light" href="/downloads">Migrez à PHP
8 maintenant!</a>
+ </div>
+ <div class="php8-footer__content">
+ <p>
+ Pour le téléchargements des sources de PHP 8 veuillez visiter la page
de <a href="http://www.php.net/downloads">téléchargement</a>.
+ Les binaires Windows peuvent être trouvé sur le site de <a
href="http://windows.php.net/download">PHP pour Windows</a>.
+ La liste de changement est notés dans le <a
href="http://www.php.net/ChangeLog-8.php">ChangeLog</a>.
+ </p>
+ <p>
+ Le <a href="/manual/fr/migration80.php">guide de migration</a> est
disponible dans le manuel PHP.
+ Veuillez le consulter pour une liste détailler des nouvelles
fonctionnalités et changement non rétrocompatible.
+ </p>
+ </div>
+ </div>
+</section>
+
+
+
+
+<?php site_footer();
--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php