{"id":228,"date":"2025-01-28T07:18:00","date_gmt":"2025-01-28T06:18:00","guid":{"rendered":"https:\/\/josefnemec.cz\/blog\/?p=228"},"modified":"2025-01-24T00:21:21","modified_gmt":"2025-01-23T23:21:21","slug":"jake-problemy-muze-prinest-prechod-na-php-8-4","status":"publish","type":"post","link":"https:\/\/josefnemec.cz\/blog\/php\/jake-problemy-muze-prinest-prechod-na-php-8-4\/","title":{"rendered":"Jak\u00e9 probl\u00e9my m\u016f\u017ee p\u0159in\u00e9st p\u0159echod na PHP 8.4?"},"content":{"rendered":"\n<p><a href=\"https:\/\/josefnemec.cz\/blog\/php\/novinky-v-php-8-4\/\" data-type=\"post\" data-id=\"10\">PHP 8.4<\/a>, kter\u00e9 bylo pl\u00e1nov\u00e1no na listopad 2024, p\u0159in\u00e1\u0161\u00ed nejen nov\u00e9 funkce, ale i <strong>deprekovan\u00e9 prvky<\/strong>, kter\u00e9 mohou zp\u016fsobit probl\u00e9my p\u0159i migraci. Pokud pl\u00e1nujete p\u0159echod na tuto novou verzi PHP, m\u011bli byste b\u00fdt p\u0159ipraveni na n\u011bkolik zm\u011bn, kter\u00e9 mohou ovlivnit st\u00e1vaj\u00edc\u00ed k\u00f3d.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deprecation: Implicitn\u011b ozna\u010den\u00e9 parametry jako nullable<\/h3>\n\n\n\n<p>Jednou z nejv\u00fdrazn\u011bj\u0161\u00edch zm\u011bn, kter\u00e9 p\u0159in\u00e1\u0161\u00ed PHP 8.4, je deprekov\u00e1n\u00ed implicitn\u00edho ozna\u010den\u00ed parametr\u016f jako nullable. V p\u0159edchoz\u00edch verz\u00edch PHP bylo b\u011b\u017en\u00e9 ozna\u010dit parametr jako nullable jednodu\u0161e t\u00edm, \u017ee mu p\u0159i\u0159ad\u00edte hodnotu <code>null<\/code> v deklaraci funkce, nap\u0159\u00edklad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function test(string $test = null) {}\n<\/code><\/pre>\n\n\n\n<p><strong>Tato syntaxe byla povolena a\u017e do verze PHP 8.3, ale od verze 8.4 se st\u00e1v\u00e1 deprekovanou<\/strong>. Pokud tedy budete i nad\u00e1le pou\u017e\u00edvat tuto syntaxi, PHP na to upozorn\u00ed p\u0159i spu\u0161t\u011bn\u00ed k\u00f3du.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">P\u0159\u00edklad:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>function test(string $test = null) {}\n\ntest('PHP'); \/\/ Povoleno\ntest(null); \/\/ Povoleno\n<\/code><\/pre>\n\n\n\n<p>Tento zp\u016fsob deklarace parametr\u016f v\u0161ak bude v PHP 8.4 ji\u017e pova\u017eov\u00e1n za zastaral\u00fd. <strong>Pro opravu je nutn\u00e9 pou\u017e\u00edt explicitn\u00ed nullable typ,<\/strong> kter\u00fd byl zaveden ve verzi PHP 7.1. Opraven\u00e1 syntaxe by m\u011bla vypadat takto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function test(?string $test = null) {}\n<\/code><\/pre>\n\n\n\n<p>Tento nov\u00fd z\u00e1pis jasn\u011b specifikuje, \u017ee parametr <code>$test<\/code> m\u016f\u017ee b\u00fdt bu\u010f typu <code>string<\/code>, nebo <code>null<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak zjistit deprekovan\u00e9 funkce?<\/h3>\n\n\n\n<p>Detekce t\u00e9to deprekovan\u00e9 funkce je snadn\u00e1, pokud pou\u017e\u00edv\u00e1te n\u00e1stroje, jako je PHP&#8217;s vestav\u011bn\u00fd linter. Sta\u010d\u00ed m\u00edt nainstalovanou verzi PHP 8.4 a spustit linter na va\u0161em k\u00f3du. Linter v\u00e1m pom\u016f\u017ee odhalit v\u0161echny \u010d\u00e1sti k\u00f3du, kter\u00e9 pou\u017e\u00edvaj\u00ed zastaralou syntaxi, a doporu\u010d\u00ed opravu. To v\u00e1m umo\u017en\u00ed p\u0159ipravit v\u00e1\u0161 k\u00f3d na p\u0159echod na PHP 8.4 bez v\u011bt\u0161\u00edch probl\u00e9m\u016f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Doporu\u010den\u00ed pro p\u0159echod na PHP 8.4<\/h3>\n\n\n\n<p>Pokud chcete zajistit, aby p\u0159echod na PHP 8.4 prob\u00edhal hladce, doporu\u010dujeme n\u00e1sleduj\u00edc\u00ed kroky:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Aktualizujte sv\u016fj k\u00f3d:<\/strong> Ujist\u011bte se, \u017ee v\u0161echny funkce, kter\u00e9 pou\u017e\u00edvaj\u00ed implicitn\u011b nullable parametry, byly upraveny na explicitn\u00ed nullable typy.<\/li>\n\n\n\n<li><strong>Testov\u00e1n\u00ed:<\/strong> Prove\u010fte d\u016fkladn\u00e9 testov\u00e1n\u00ed, abyste zajistili, \u017ee v\u0161echny zm\u011bny byly spr\u00e1vn\u011b implementov\u00e1ny a \u017ee v\u00e1\u0161 k\u00f3d st\u00e1le funguje tak, jak m\u00e1.<\/li>\n\n\n\n<li><strong>Vyu\u017eijte linter:<\/strong> Pou\u017eijte PHP linter pro detekci dal\u0161\u00edch deprekovan\u00fdch funkc\u00ed, kter\u00e9 mohou b\u00fdt v k\u00f3du p\u0159\u00edtomny.<\/li>\n\n\n\n<li><strong>P\u0159ipravte se na dal\u0161\u00ed zm\u011bny:<\/strong> Sledujte novinky o PHP 8.4, abyste byli p\u0159ipraveni na p\u0159\u00edpadn\u00e9 zm\u011bny nebo nov\u00e9 funkce, kter\u00e9 mohou ovlivnit v\u00e1\u0161 k\u00f3d.<\/li>\n<\/ol>\n\n\n\n<p>P\u0159echod na PHP 8.4 m\u016f\u017ee b\u00fdt pro n\u011bkter\u00e9 v\u00fdvoj\u00e1\u0159e n\u00e1ro\u010dn\u00fd, ale pokud se na n\u011bj p\u0159iprav\u00edte a provedete pot\u0159ebn\u00e9 zm\u011bny v\u010das, migrace prob\u011bhne bez v\u011bt\u0161\u00edch probl\u00e9m\u016f.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP 8.4, kter\u00e9 bylo pl\u00e1nov\u00e1no na listopad 2024, p\u0159in\u00e1\u0161\u00ed nejen nov\u00e9 funkce, ale i deprekovan\u00e9 prvky, kter\u00e9 mohou zp\u016fsobit probl\u00e9my p\u0159i migraci. Pokud pl\u00e1nujete p\u0159echod na tuto novou verzi PHP, m\u011bli byste b\u00fdt p\u0159ipraveni na n\u011bkolik zm\u011bn, kter\u00e9 mohou ovlivnit<\/p>\n","protected":false},"author":1,"featured_media":220,"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,59,77],"tags":[62,47,10,116,49,50],"class_list":["post-228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-framework","category-nette","category-php","category-projekty","category-technologie","tag-nette","tag-php","tag-php8","tag-php84","tag-programovani","tag-vyvoj"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/josefnemec.cz\/blog\/wp-content\/uploads\/2025\/01\/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\/228","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=228"}],"version-history":[{"count":1,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/228\/revisions"}],"predecessor-version":[{"id":229,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/228\/revisions\/229"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media\/220"}],"wp:attachment":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media?parent=228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/categories?post=228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/tags?post=228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}