Author: JSHar (JSHar) Committer: GitHub (web-flow) Pusher: saundefined Date: 2021-11-26T16:03:37+03:00
Commit: https://github.com/php/web-php/commit/084a0d9880943be4c77bc8807d2477bc8cb9aacd Raw diff: https://github.com/php/web-php/commit/084a0d9880943be4c77bc8807d2477bc8cb9aacd.diff Georgian translation of the PHP 8.0 Announcement Page (#454) Co-authored-by: Sergey Panteleev <ser...@php.net> Changed paths: A releases/8.0/ka.php M releases/8.0/common.php Diff: diff --git a/releases/8.0/common.php b/releases/8.0/common.php index a4385d4d4..9392e88c8 100644 --- a/releases/8.0/common.php +++ b/releases/8.0/common.php @@ -50,6 +50,7 @@ function language_chooser(string $currentLang): void { 'ru' => 'Русский', 'tr' => 'Türkçe', 'zh' => '简体中文', + 'ka' => 'ქართული', ]; // Print out the form with all the options diff --git a/releases/8.0/ka.php b/releases/8.0/ka.php new file mode 100644 index 000000000..406955727 --- /dev/null +++ b/releases/8.0/ka.php @@ -0,0 +1,505 @@ +<?php +$_SERVER['BASE_PAGE'] = 'releases/8.0/ka.php'; +include_once __DIR__ . '/common.php'; + +releases\php80\language_redirect('ka'); +releases\php80\common_header( + 'PHP 8.0 — PHP ენის დიდი განახლება. ' . + 'ის შეიცავს ბევრ ახალ შესაძლებლობას და ოპტიმიზაციებს, ' . + 'მათ შორის დასახელებული არგუმენტები, union type, ატრიბუტები, ' . + 'თვისებების გამარტივებული განსაზღვრა კონსტრუქტორში, გამოსახულება 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('ka'); ?> + </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">რელიზი!</div> + <div class="php8-subtitle"> + PHP 8.0 — PHP ენის დიდი განახლება.<br class="display-none-md"> ის შეიცავს ბევრ ახალ შესაძლებლობას და ოპტიმიზაციებს, + მათ შორის დასახელებული არგუმენტები, union type, ატრიბუტები, თვისებების გამარტივებული განსაზღვრა კონსტრუქტორში, გამოსახულება 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>არგუმენტების თანმიმდევრობა არ არის მნიშვნელოვანი, არგუმენტები თვითდოკუმენტირებადია.</li> + </ul> + </div> + </div> + + <div class="php8-compare"> + <h2 class="php8-h2" id="attributes"> + Attributes + <a class="php8-rfc" href="https://wiki.php.net/rfc/attributes_v2">RFC</a> <a class="php8-rfc" href="/manual/en/language.attributes.php">დოკუმენტაცია</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/en/language.oop5.decon.php#language.oop5.decon.constructor.promotion">დოკუმენტაცია</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 types + <a class="php8-rfc" href="https://wiki.php.net/rfc/union_types_v2">RFC</a> <a class="php8-rfc" href="/manual/en/language.types.declarations.php#language.types.declarations.union">დოკუმენტაცია</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\'); // შეცდომები არაა' + );?> + </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 type, + რომლებიც მოწმდება შესრულების დროს.</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/en/control-structures.match.php">დოკუმენტაცია</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 = "ოოო არა!"; + break; + case 8.0: + $result = "ის, რასაც მე ველოდი"; + break; +} +echo $result; +//> ოოო არა!' + );?> + </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 => "ის, რასაც მე ველოდი", +}; +//> ის, რასაც მე ველოდი' + );?> + </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-ს, შესრულება ჩერდება და მთელი თანმიმდევრობა აბრუნებს 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"> + ტიპების თანმიმდევრულობის შეცდომები ჩაშენებული ფუნქციებისთვის + <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">კომპილაცია Just-In-Time</h2> + <p> + PHP 8 წარმოგიდგენთ JIT-კომპილაციის ორ მექანიზმს. JIT ტრასირება, მათგან ყველაზე პერსპექტიულია, + სინთეზურ ბენჩმარკზე აჩვენებს მუშაობის გაუმჯობესებას დაახლოებით 3-ჯერ და 1.5-2-ჯერ ზოგიერთ დიდ ხანს მომუშავე აპლიკაციებში. + აპლიკაციის სტანდარტული წარმადობა ერთ და იგივე დონეზეა PHP 7.4-თან. + </p> + <h3 class="php8-h3"> + JIT-ის შედარებითი წვლილი 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">გაუმჯობესებები ტიპის სისტემაში და შეცდომების დამუშავება</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> + ფატალური შეცდომა, როდესაც მეთოდის სიგნატურა შეუთავსებელია <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 თემა</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>, and + <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> + მძიმე დაშვებულია პარამეტრების სიის ბოლოს <a href="https://wiki.php.net/rfc/trailing_comma_in_parameter_list">RFC</a> + და use დამოკლების სიაში <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> class + </li> + <li> + <a href="https://wiki.php.net/rfc/stringable">Stringable</a> interface + </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> + <li> + <a href="https://wiki.php.net/rfc/dom_living_standard_api">ახალი API-ები DOM-ის გადასასვლელად და დასამუშავებლად</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"> + უკეთესი წარმადობა, უკეთესი სინტაქსი, უფრო საიმედო ტიპების სისტემა. + </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">ჩამოტვირთვის</a> გვერდს. + Windows-ის ბინარული ფაილები განთავსებულია საიტზე <a href="http://windows.php.net/download">PHP Windows-თვის</a>. + ცვლილებების სია წარმოდგენილია <a href="http://www.php.net/ChangeLog-8.php">ChangeLog-ში</a>. + </p> + <p> + <a href="/manual/en/migration80.php">მიგრაციის გზამკვლევი</a> ხელმისაწვდომია დოკუმენტაციის განყოფილებაში. გთხოვთ, + შეისწავლოთ იგი ახალი ფუნქციების დეტალური ჩამონათვალის მისაღებად და უკუ შეუთავსებელი ცვლილებებისთვის. + </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