Commit: 1addae284d1f95226738aa35ba76b7d444f7fd04 Author: Yoshinari Takaoka <mum...@mumumu.org> Sun, 29 Nov 2020 08:16:44 +0900 Committer: Christoph M. Becker <cmbecke...@gmx.de> Wed, 2 Dec 2020 23:38:18 +0100 Parents: 446f1d59058e51e1ca5ea245f1559685c2ee5590 Branches: master
Link: http://git.php.net/?p=web/php.git;a=commitdiff;h=1addae284d1f95226738aa35ba76b7d444f7fd04 Log: Japanese translation of the PHP 8 Announcement Page Closes GH-372. Changed paths: M releases/8.0/common.php A releases/8.0/ja.php
diff --git a/releases/8.0/common.php b/releases/8.0/common.php index 24192de5c..a4385d4d4 100644 --- a/releases/8.0/common.php +++ b/releases/8.0/common.php @@ -44,6 +44,7 @@ function language_chooser(string $currentLang): void { 'es' => 'Español', 'fr' => 'Français', 'it' => 'Italiano', + 'ja' => '日本語', 'nl' => 'Nederlands', 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', diff --git a/releases/8.0/ja.php b/releases/8.0/ja.php new file mode 100644 index 000000000..f7daf14f5 --- /dev/null +++ b/releases/8.0/ja.php @@ -0,0 +1,508 @@ +<?php +$_SERVER['BASE_PAGE'] = 'releases/8.0/en.php'; +include_once __DIR__ . '/common.php'; + +releases\php80\language_redirect('ja'); + +releases\php80\common_header( + 'PHP 8.0 は、PHP 言語のメジャーアップデートです。' . + 'このアップデートには、たくさんの新機能や最適化が含まれています。たとえば' . + '名前付き引数、union 型、アトリビュート、コンストラクタでのプロパティのプロモーション、' . + 'match 式、 nullsafe 演算子、JIT、' . + '型システムの改善、エラーハンドリング、一貫性の向上などです。'); + +?> +<section class="php8-section php8-section_dark php8-section_header center"> + <div class="page-tools"> + <div class="change-language"> + <?php releases\php80\language_chooser('ja'); ?> + </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 は、PHP 言語のメジャーアップデートです。<br class="display-none-md"> このアップデートには、たくさんの新機能や最適化が含まれています。 + たとえば 名前付き引数、 union 型、アトリビュート、コンストラクタでのプロパティのプロモーション、match 式、nullsafe 演算子、JIT、型システムの改善、エラーハンドリング、一貫性の向上などです。 + </div> + <div class="php8-button-wrapper center"> + <a class="php8-button php8-button_light" href="/downloads">PHP 8 にアップデートしよう!</a> + </div> + </div> +</section> + +<section class="php8-section center"> + <div class="php8-compare"> + <h2 class="php8-h2" id="named-arguments"> + 名前付き引数 + <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>必須の引数だけを指定し、オプションの引数はスキップしています。</li> + <li>引数の順番に依存せず、自己文書化(self-documented)されています。</li> + </ul> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="attributes"> + アトリビュート + <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( + 'class PostsController +{ + /** + * @Route("/api/posts/{id}", methods={"GET"}) + */ + public function get($id) { /* ... */ } +}' + );?> + </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 PostsController +{ + #[Route("/api/posts/{id}", methods: ["GET"])] + public function get($id) { /* ... */ } +}' + );?> + </div> + </div> + </div> + <div class="php8-compare__content"> + <p>PHPDoc のアノテーションの代わりに、PHP ネイティブの文法で構造化されたメタデータを扱えるようになりました。</p> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="constructor-property-promotion"> + コンストラクタでの、プロパティのプロモーション + <a class="php8-rfc" href="https://wiki.php.net/rfc/constructor_promotion">RFC</a> <a class="php8-rfc" href="/manual/ja/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>ボイラープレートのコードを減らすため、コンストラクタでプロパティを定義し、初期化します。</p> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="union-types"> + Union 型 + <a class="php8-rfc" href="https://wiki.php.net/rfc/union_types_v2">RFC</a> <a class="php8-rfc" href="/manual/ja/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>PHPDoc のアノテーションを使って型を組み合わせる代わりに、実行時に検証が行われる union型 をネイティブで使えるようになりました。</p> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="match-expression"> + Match 式 + <a class="php8-rfc" href="https://wiki.php.net/rfc/match_expression_v2">RFC</a> <a class="php8-rfc" href="/manual/ja/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>match は switch 文に似ていますが、以下の機能があります:</p> + <ul> + <li>match は式なので、結果を返したり、変数に保存したりできます。</li> + <li>match の分岐は一行の式だけをサポートしており、break; 文は不要です。</li> + <li>match は、型と値について、厳密な比較を行います。</li> + </ul> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="nullsafe-operator"> + 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>null チェックの条件を追加する代わりに、nullsafe演算子 を使って呼び出しをチェインさせられるようになりました。呼び出しチェインのひとつが失敗すると、チェインの実行全体が停止し、null と評価されます。</p> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="saner-string-to-number-comparisons"> + 数値と文字列の比較 + <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>数値形式の文字列と比較する場合は、PHP 8 は数値として比較を行います。それ以外の場合は、数値を文字列に変換し、文字列として比較を行います。</p> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="consistent-type-errors-for-internal-functions"> + <!--Consistent type errors for internal functions--> + 内部関数の型に関するエラーが一貫したものに + <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>ほとんどの内部関数は、引数の検証に失敗すると Error 例外をスローするようになりました。</p> + </div> + </div> +</section> + +<section class="php8-section php8-section_light"> + <h2 class="php8-h2">JIT (ジャストインタイム) コンパイル</h2> + <p> + PHP 8 は JITコンパイル のエンジンをふたつ搭載しています。 + トレーシングJITは、もっとも有望なふたつの人工的なベンチマークで、 + 約3倍のパフォーマンスを示しました。 + また、長期間動いている特定のあるアプリケーションでは、1.5-2倍のパフォーマンス向上が見られました。 + 典型的なアプリケーションのパフォーマンスは、PHP 7.4 と同等でした。 + </p> + <h3 class="php8-h3"> + PHP 8 のパフォーマンスに対するJITの貢献 + <!-- + Relative JIT contribution to PHP 8 performance + --> + </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">型システムとエラーハンドリングの改善</h2> + <ul> + <li> + 算術/ビット演算子のより厳密な型チェック + <a href="https://wiki.php.net/rfc/arithmetic_operator_type_checks">RFC</a> + </li> + <li> + トレイトの抽象メソッドの検証 <a href="https://wiki.php.net/rfc/abstract_trait_method_validation">RFC</a> + </li> + <li> + マジックメソッドのシグネチャ <a href="https://wiki.php.net/rfc/magic-methods-signature">RFC</a> + </li> + <li> + エンジンの警告を整理 <a href="https://wiki.php.net/rfc/engine_warnings">RFC</a> + </li> + <li> + 互換性のないメソッドシグネチャは fatal error に。 + <a href="https://wiki.php.net/rfc/lsp_errors">RFC</a> + </li> + <li> + @ 演算子は、致命的なエラーを隠さなくなりました。 + </li> + <li> + private メソッドの継承時のシグネチャチェック <a href="https://wiki.php.net/rfc/inheritance_private_methods">RFC</a> + </li> + <li> + Mixed 型のサポート <a href="https://wiki.php.net/rfc/mixed_type_v2">RFC</a> + </li> + <li> + 戻り値で static 型をサポート <a href="https://wiki.php.net/rfc/static_return_type">RFC</a> + </li> + <li> + 内部関数に型アノテーション + <a href="https://externals.io/message/106522">Email thread</a> + </li> + <li> + 一部の拡張機能が、リソースからオブジェクトに移行: + <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>, + <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">その他文法の調整や改善</h2> + <ul> + <li> + 引数やクロージャーのuseリストの最後にカンマがつけられるように <a href="https://wiki.php.net/rfc/trailing_comma_in_parameter_list">RFC</a> + <a href="https://wiki.php.net/rfc/trailing_comma_in_closure_use_list">RFC</a> + </li> + <li> + catch で例外のキャプチャが不要に <a href="https://wiki.php.net/rfc/non-capturing_catches">RFC</a> + </li> + <li> + 変数の文法の調整 <a href="https://wiki.php.net/rfc/variable_syntax_tweaks">RFC</a> + </li> + <li> + 名前空間の名前を単一のトークンとして扱う <a href="https://wiki.php.net/rfc/namespaced_names_as_token">RFC</a> + </li> + <li> + Throw は式になりました <a href="https://wiki.php.net/rfc/throw_expression">RFC</a> + </li> + <li> + オブジェクトに対して ::class が使えるように <a href="https://wiki.php.net/rfc/class_name_literal_on_object">RFC</a> + </li> + </ul> + + <h2 class="php8-h2 php8-h2_margin-top">新しいクラス、インターフェイス、関数</h2> + <ul> + <li> + <a href="https://wiki.php.net/rfc/weak_maps">Weak Map</a> クラス + </li> + <li> + <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> をオブジェクトベースで実装 + </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"> + <!-- + Better performance, better syntax, improved type safety. + --> + パフォーマンスの向上、より良い文法、型システムの改善 + </h2> + <div class="php8-button-wrapper center"> + <a class="php8-button php8-button_light" href="/downloads">PHP 8 にアップデートしよう!</a> + </div> + <div class="php8-footer__content"> + <p> + PHP 8 のソースコードのダウンロードは、 + <a href="http://www.php.net/downloads">downloads</a> のページをどうぞ。 + Windows 用のバイナリは <a href="http://windows.php.net/download">PHP for Windows</a> のページにあります。 + 変更の一覧は <a href="http://www.php.net/ChangeLog-8.php">ChangeLog</a> にあります。 + </p> + <p> + <a href="/manual/ja/migration80.php">移行ガイド</a> が PHP マニュアルで利用できます。 + 新機能や下位互換性のない変更の詳細については、移行ガイドを参照して下さい。 + </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