{"id":10,"date":"2024-12-17T11:32:29","date_gmt":"2024-12-17T10:32:29","guid":{"rendered":"https:\/\/josefnemec.cz\/blog\/?p=10"},"modified":"2024-12-17T18:40:53","modified_gmt":"2024-12-17T17:40:53","slug":"novinky-v-php-8-4","status":"publish","type":"post","link":"https:\/\/josefnemec.cz\/blog\/php\/novinky-v-php-8-4\/","title":{"rendered":"Novinky v PHP 8.4"},"content":{"rendered":"\n<p><strong>Novinky v PHP 8.4: Co n\u00e1m p\u0159in\u00e1\u0161\u00ed nejnov\u011bj\u0161\u00ed verze?<\/strong><\/p>\n\n\n\n<p>PHP 8.4 p\u0159ich\u00e1z\u00ed s celou \u0159adou vylep\u0161en\u00ed a nov\u00fdch funkc\u00ed, kter\u00e9 zjednodu\u0161\u00ed pr\u00e1ci v\u00fdvoj\u00e1\u0159\u016fm a zvy\u0161\u00ed v\u00fdkon jejich aplikac\u00ed. Poj\u010fme se pod\u00edvat na nejv\u00fdznamn\u011bj\u0161\u00ed zm\u011bny, kter\u00e9 tato verze nab\u00edz\u00ed.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Zabezpe\u010den\u00ed a kryptografie<\/strong><\/h3>\n\n\n\n<p>V oblasti kryptografie doch\u00e1z\u00ed k roz\u0161\u00ed\u0159en\u00ed podpory o algoritmy AEGIS-128L a AEGIS-256 v knihovn\u011b Sodium. Tyto algoritmy nab\u00edzej\u00ed v\u011bt\u0161\u00ed flexibilitu p\u0159i implementaci bezpe\u010dn\u00fdch \u0159e\u0161en\u00ed.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pr\u00e1ce s poli<\/strong><\/h3>\n\n\n\n<p>PHP 8.4 zav\u00e1d\u00ed nov\u00e9 funkce pro jednodu\u0161\u0161\u00ed manipulaci s poli:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>array_find<\/code> \u2013 Najde prvn\u00ed prvek spl\u0148uj\u00edc\u00ed podm\u00ednku.<\/li>\n\n\n\n<li><code>array_find_key<\/code> \u2013 Vr\u00e1t\u00ed kl\u00ed\u010d prvku spl\u0148uj\u00edc\u00edho podm\u00ednku.<\/li>\n\n\n\n<li><code>array_any<\/code> \u2013 Zjist\u00ed, zda alespo\u0148 jeden prvek pole spl\u0148uje danou podm\u00ednku.<\/li>\n\n\n\n<li><code>array_all<\/code> \u2013 Zkontroluje, zda v\u0161echny prvky pole spl\u0148uj\u00ed podm\u00ednku.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pr\u00e1ce s textem<\/strong><\/h3>\n\n\n\n<p>Pro efektivn\u011bj\u0161\u00ed pr\u00e1ci s textem byly p\u0159id\u00e1ny tyto novinky:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>grapheme_str_split<\/code> \u2013 Rozd\u011bl\u00ed text na \u010d\u00e1sti podle graf\u00e9m\u016f, co\u017e je u\u017eite\u010dn\u00e9 pro unicode texty.<\/li>\n\n\n\n<li><code>mb_ucfirst<\/code> a <code>mb_lcfirst<\/code> \u2013 Prov\u00e1d\u00ed zm\u011bnu velk\u00fdch a mal\u00fdch p\u00edsmen u prvn\u00edho znaku textu s podporou multibyte znak\u016f.<\/li>\n\n\n\n<li><code>mb_trim<\/code>, <code>mb_ltrim<\/code>, <code>mb_rtrim<\/code> \u2013 Odstra\u0148uj\u00ed mezery nebo jin\u00e9 znaky z textu s podporou multibyte znak\u016f.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Funkce pro zaokrouhlov\u00e1n\u00ed<\/strong><\/h3>\n\n\n\n<p>Funkce <code>round()<\/code> nyn\u00ed podporuje nov\u00e9 re\u017eimy zaokrouhlov\u00e1n\u00ed, co\u017e d\u00e1v\u00e1 v\u00fdvoj\u00e1\u0159\u016fm v\u011bt\u0161\u00ed kontrolu nad zp\u016fsobem, jak\u00fdm jsou \u010d\u00edsla zaokrouhlov\u00e1na.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Vylep\u0161en\u00ed pro pr\u00e1ci s daty a \u010dasem<\/strong><\/h3>\n\n\n\n<p>PHP 8.4 p\u0159in\u00e1\u0161\u00ed v\u00fdznamn\u00e1 roz\u0161\u00ed\u0159en\u00ed t\u0159\u00eddy <code>DateTime<\/code> a <code>DateTimeImmutable<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>createFromTimestamp<\/code> \u2013 Nov\u00fd zp\u016fsob, jak vytvo\u0159it instance t\u011bchto t\u0159\u00edd z timestampu.<\/li>\n\n\n\n<li><code>getMicrosecond<\/code> a <code>setMicrosecond<\/code> \u2013 Metody pro z\u00edsk\u00e1n\u00ed a nastaven\u00ed mikrosekund.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Curl: Podpora HTTP\/3 a dal\u0161\u00ed zlep\u0161en\u00ed<\/strong><\/h3>\n\n\n\n<p>Knihovna Curl p\u0159id\u00e1v\u00e1 podporu pro HTTP\/3 pomoc\u00ed nov\u00fdch konstant <code>CURL_HTTP_VERSION_3<\/code> a <code>CURL_HTTP_VERSION_3ONLY<\/code>. D\u00e1le byly p\u0159id\u00e1ny tyto novinky:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>CURLOPT_PREREQFUNCTION<\/code> a <code>CURLOPT_DEBUGFUNCTION<\/code> \u2013 Nov\u00e9 mo\u017enosti pro l\u00e9pe definovan\u00e9 a debugovac\u00ed procesy.<\/li>\n\n\n\n<li><code>CURLOPT_SERVER_RESPONSE_TIMEOUT<\/code> \u2013 Nahrazuje p\u016fvodn\u00ed <code>CURLOPT_FTP_RESPONSE_TIMEOUT<\/code>.<\/li>\n\n\n\n<li><code>CURLOPT_TCP_KEEPCNT<\/code> \u2013 Nastav\u00ed po\u010det kontrol \u017eiv\u00fdch spojen\u00ed TCP.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dal\u0161\u00ed zaj\u00edmav\u00e9 novinky<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>phpinfo()<\/code> nyn\u00ed zobrazuje velikost integeru.<\/li>\n\n\n\n<li>Nov\u00e1 funkce <code>request_parse_body<\/code> umo\u017e\u0148uje jednodu\u0161\u0161\u00ed zpracov\u00e1n\u00ed t\u011bla HTTP po\u017eadavk\u016f.<\/li>\n\n\n\n<li>Funkce <code>curl_version()<\/code> podporuje zobrazen\u00ed seznamu vlastnost\u00ed pomoc\u00ed <code>feature_list<\/code>.<\/li>\n\n\n\n<li>Nov\u00e1 rozhran\u00ed <code>http_get_last_response_headers<\/code> a <code>http_clear_last_response_headers<\/code> poskytuj\u00ed lep\u0161\u00ed kontrolu nad HTTP hlavi\u010dkami.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Upgrade PCRE2 a zm\u011bny v regul\u00e1rn\u00edch v\u00fdrazech<\/strong><\/h3>\n\n\n\n<p>PHP 8.4 zahrnuje upgrade knihovny PCRE2, co\u017e zlep\u0161uje podporu pro regul\u00e1rn\u00ed v\u00fdrazy a jejich v\u00fdkon.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>PHP 8.4 nab\u00edz\u00ed mnoho u\u017eite\u010dn\u00fdch novinek, kter\u00e9 stoj\u00ed za vyzkou\u0161en\u00ed. Pokud chcete z\u016fstat na \u0161pi\u010dce v\u00fdvoje, nev\u00e1hejte a p\u0159ejd\u011bte na tuto verzi. S kompletn\u00edm p\u0159ehledem zm\u011bn se m\u016f\u017eete sezn\u00e1mit na <a href=\"https:\/\/php.watch\/versions\/8.4\">PHP WATCH<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP 8.4 p\u0159ich\u00e1z\u00ed s celou \u0159adou vylep\u0161en\u00ed a nov\u00fdch funkc\u00ed, kter\u00e9 zjednodu\u0161\u00ed pr\u00e1ci v\u00fdvoj\u00e1\u0159\u016fm a zvy\u0161\u00ed v\u00fdkon jejich aplikac\u00ed. Poj\u010fme se pod\u00edvat na nejv\u00fdznamn\u011bj\u0161\u00ed zm\u011bny, kter\u00e9 tato verze nab\u00edz\u00ed.<\/p>\n","protected":false},"author":1,"featured_media":12,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[27,28,4,6],"tags":[22,47,10,49,48],"class_list":["post-10","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-framework","category-nette","category-php","category-webdesign","tag-devops","tag-php","tag-php8","tag-programovani","tag-webdesign"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/josefnemec.cz\/blog\/wp-content\/uploads\/2024\/12\/DALL%C2%B7E-2024-12-17-11.33.03-A-visually-engaging-image-representing-PHP-8.4s-new-features.-The-composition-includes-a-stylized-PHP-elephant-mascot-standing-next-to-a-glowing-vers.webp?fit=1024%2C1024&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":2,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":71,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/10\/revisions\/71"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media\/12"}],"wp:attachment":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}