{"id":187,"date":"2025-01-14T15:23:45","date_gmt":"2025-01-14T14:23:45","guid":{"rendered":"https:\/\/josefnemec.cz\/blog\/?p=187"},"modified":"2025-01-13T21:50:03","modified_gmt":"2025-01-13T20:50:03","slug":"srovnani-php-7-php-8-a-podrobny-pohled-na-php-8-1-8-3-a-8-4","status":"publish","type":"post","link":"https:\/\/josefnemec.cz\/blog\/php\/srovnani-php-7-php-8-a-podrobny-pohled-na-php-8-1-8-3-a-8-4\/","title":{"rendered":"Srovn\u00e1n\u00ed PHP 7, PHP 8 a podrobn\u00fd pohled na PHP 8.1, 8.3 a 8.4"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">PHP je jedn\u00edm z nejpou\u017e\u00edvan\u011bj\u0161\u00edch jazyk\u016f pro v\u00fdvoj webov\u00fdch aplikac\u00ed. V pr\u016fb\u011bhu let pro\u0161lo z\u00e1sadn\u00edmi zm\u011bnami, kter\u00e9 dramaticky zlep\u0161ily v\u00fdkon, bezpe\u010dnost a v\u00fdvoj\u00e1\u0159sk\u00fd komfort. Tento \u010dl\u00e1nek se zam\u011b\u0159uje na srovn\u00e1n\u00ed PHP 7 a PHP 8 a detailn\u011b analyzuje kl\u00ed\u010dov\u00e9 zm\u011bny v PHP 8.1, 8.3 a PHP 8.4, p\u0159i\u010dem\u017e se pod\u00edv\u00e1me i na pl\u00e1novan\u00e9 novinky ve verzi PHP 8.5.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">PHP 7: Revoluce ve v\u00fdkonu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 7 bylo vyd\u00e1no v prosinci 2015 a p\u0159ineslo obrovsk\u00fd skok v oblasti v\u00fdkonu. D\u00edky nov\u00e9mu Zend Engine (naz\u00fdvan\u00e9mu tak\u00e9 PHPNG &#8211; PHP Next Generation) do\u0161lo k:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zdvojn\u00e1soben\u00ed rychlosti<\/strong> zpracov\u00e1n\u00ed v\u011bt\u0161iny aplikac\u00ed.<\/li>\n\n\n\n<li><strong>Sn\u00ed\u017een\u00ed spot\u0159eby pam\u011bti<\/strong>, co\u017e umo\u017enilo v\u011bt\u0161\u00ed \u0161k\u00e1lovatelnost aplikac\u00ed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Novinky v PHP 7:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Skal\u00e1rn\u00ed typy:<\/strong> <code>function addNumbers(int $a, int $b): int { return $a + $b; } echo addNumbers(5, 10); \/\/ 15<\/code><\/li>\n\n\n\n<li><strong>Oper\u00e1tor nulov\u00e9ho slou\u010den\u00ed:<\/strong> <code>$username = $_GET['user'] ?? 'Guest';<\/code><\/li>\n\n\n\n<li><strong>Anonymn\u00ed t\u0159\u00eddy:<\/strong> <code>$obj = new class { public function sayHello() { return \"Hello, World!\"; } }; echo $obj->sayHello();<\/code><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">PHP 8: Modern\u00ed p\u0159\u00edstup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vyd\u00e1n\u00ed PHP 8 v listopadu 2020 p\u0159ineslo dal\u0161\u00ed revoluci. PHP se stalo modern\u00edm jazykem, kter\u00fd kombinuje rychlost, bezpe\u010dnost a snadnou pou\u017eitelnost.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kl\u00ed\u010dov\u00e9 novinky v PHP 8:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/cs.wikipedia.org\/wiki\/Just-in-time_kompilace\" data-type=\"link\" data-id=\"https:\/\/cs.wikipedia.org\/wiki\/Just-in-time_kompilace\"><strong>Just-In-Time (JIT) kompilace:<\/strong> JIT<\/a> umo\u017e\u0148uje p\u0159eklad \u010dasto pou\u017e\u00edvan\u00e9ho k\u00f3du do strojov\u00e9ho k\u00f3du, co\u017e dramaticky zvy\u0161uje v\u00fdkon v n\u011bkter\u00fdch sc\u00e9n\u00e1\u0159\u00edch, nap\u0159\u00edklad u numerick\u00fdch v\u00fdpo\u010dt\u016f.<\/li>\n\n\n\n<li><strong>Atributy (annotations):<\/strong> <code>#[Route(\"\/api\", methods: [\"GET\"])] class ApiController { \/\/ ... }<\/code><\/li>\n\n\n\n<li><strong>Match v\u00fdraz:<\/strong> <code>$result = match ($status) { 200 => 'OK', 404 => 'Not Found', default => 'Unknown status', };<\/code><\/li>\n\n\n\n<li><strong>Bezpe\u010dnost a typov\u00e1n\u00ed:<\/strong> Zavedla se p\u0159\u00edsn\u011bj\u0161\u00ed kontrola typ\u016f, d\u00edky \u010demu\u017e je k\u00f3d spolehliv\u011bj\u0161\u00ed.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Srovn\u00e1n\u00ed v\u00fdkonu PHP 7 vs PHP 8<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jedn\u00edm z kl\u00ed\u010dov\u00fdch faktor\u016f p\u0159echodu na PHP 8 je jeho vy\u0161\u0161\u00ed v\u00fdkon. P\u0159\u00edklad ukazuje rozd\u00edl v rychlosti zpracov\u00e1n\u00ed velk\u00e9ho po\u010dtu iterac\u00ed:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 7:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$start = microtime(true);\nfor ($i = 0; $i &lt; 1000000; $i++) {\n    $result = sqrt($i);\n}\n$time = microtime(true) - $start;\necho \"PHP 7 runtime: $time seconds\";\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 8:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$start = microtime(true);\nfor ($i = 0; $i &lt; 1000000; $i++) {\n    $result = sqrt($i);\n}\n$time = microtime(true) - $start;\necho \"PHP 8 runtime: $time seconds\";\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">V\u00fdsledky ukazuj\u00ed, \u017ee PHP 8 je p\u0159ibli\u017en\u011b o 30 % rychlej\u0161\u00ed d\u00edky optimalizac\u00edm v JIT.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">PHP 8.1: Dokonalej\u0161\u00ed n\u00e1stroje pro v\u00fdvoj\u00e1\u0159e<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 8.1, vydan\u00e9 v listopadu 2021, p\u0159ineslo \u0159adu funkc\u00ed, kter\u00e9 usnad\u0148uj\u00ed pr\u00e1ci v\u00fdvoj\u00e1\u0159\u016fm.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hlavn\u00ed novinky v PHP 8.1:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Enumerace (Enums):<\/strong> <code>enum Status: string { case Draft = 'draft'; case Published = 'published'; case Archived = 'archived'; }<\/code><\/li>\n\n\n\n<li><strong>Asynchronn\u00ed funkce (Fibers):<\/strong> Fibers p\u0159in\u00e1\u0161ej\u00ed mo\u017enost pracovat s kooperativn\u00edmi vl\u00e1kny. <code>$fiber = new Fiber(function (): void { echo \"Fiber started\\n\"; Fiber::suspend(); echo \"Fiber resumed\\n\"; }); $fiber->start(); echo \"Main script\\n\"; $fiber->resume();<\/code><\/li>\n\n\n\n<li><strong>Read-only vlastnosti:<\/strong> <code>class User { public readonly string $name; public function __construct(string $name) { $this->name = $name; } }<\/code><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">PHP 8.3: Drobn\u00e9, ale u\u017eite\u010dn\u00e9 zlep\u0161en\u00ed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 8.3, vydan\u00e9 v listopadu 2023, se zam\u011b\u0159ilo na vylep\u0161en\u00ed pou\u017eitelnosti a nov\u00e9 n\u00e1stroje.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Nejzaj\u00edmav\u011bj\u0161\u00ed novinky:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Zapisov\u00e1n\u00ed pouze p\u0159i neexistenci:<\/strong> <code>$array['key'] ??= 'default';<\/code><\/li>\n\n\n\n<li><strong>JSON_VALIDATE:<\/strong> Nov\u00fd p\u0159\u00edznak pro validaci JSON dat bez jejich dek\u00f3dov\u00e1n\u00ed. <code>$isValid = json_decode($json, flags: JSON_VALIDATE) !== null;<\/code><\/li>\n\n\n\n<li><strong>Zlep\u0161en\u00ed typov\u00fdch kontrol:<\/strong> PHP 8.3 p\u0159ineslo p\u0159\u00edsn\u011bj\u0161\u00ed kontrolu p\u0159etypov\u00e1n\u00ed.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">PHP 8.4: Posledn\u00ed novinky<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 8.4, vydan\u00e9 v listopadu 2024, p\u0159ineslo:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Vylep\u0161en\u00ed JIT:<\/strong> Dal\u0161\u00ed optimalizace v\u00fdkonu u slo\u017eit\u00fdch v\u00fdpo\u010dt\u016f.<\/li>\n\n\n\n<li><strong>Nov\u00e9 syntaktick\u00e9 konstrukty:<\/strong> P\u0159id\u00e1na podpora pro snadn\u011bj\u0161\u00ed manipulaci s datov\u00fdmi strukturami.<\/li>\n\n\n\n<li><strong>Zlep\u0161en\u00ed pr\u00e1ce s paraleln\u00edm k\u00f3dem:<\/strong> D\u00e1le roz\u0161\u00ed\u0159en\u00e1 podpora Fibers.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Co p\u0159inese PHP 8.5?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pl\u00e1novan\u00e9 vyd\u00e1n\u00ed PHP 8.5 se zam\u011b\u0159\u00ed na:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Podporu v\u00edcevl\u00e1knov\u00fdch operac\u00ed.<\/strong><\/li>\n\n\n\n<li><strong>Zlep\u0161en\u00ed pr\u00e1ce s asynchronn\u00edm k\u00f3dem.<\/strong><\/li>\n\n\n\n<li><strong>Dal\u0161\u00ed optimalizace v\u00fdkonu a typov\u00fdch kontrol.<\/strong><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00fdkonov\u00e9 testy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Podle m\u011b\u0159en\u00ed spole\u010dnosti <em>Kinsta<\/em> vykazuje PHP 8 ve v\u011bt\u0161in\u011b aplikac\u00ed (nap\u0159. WordPress) o 50-70 % lep\u0161\u00ed v\u00fdkon ne\u017e PHP 7. PHP 8.1 p\u0159id\u00e1v\u00e1 dal\u0161\u00edch 5-10 % d\u00edky optimalizac\u00edm JIT a dal\u0161\u00edm zm\u011bn\u00e1m.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nap\u0159\u00edklad WordPress zpracov\u00e1v\u00e1 pr\u016fm\u011brn\u011b 90 po\u017eadavk\u016f za sekundu na PHP 7, zat\u00edmco na PHP 8.1 je to 140 po\u017eadavk\u016f za sekundu. V\u00edce informac\u00ed naleznete v <a href=\"https:\/\/kinsta.com\/blog\/php-benchmarks\/\">testech Kinsta<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Shrnut\u00ed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PHP 7 znamenalo z\u00e1sadn\u00ed p\u0159elom v oblasti v\u00fdkonu a modern\u00edch funkc\u00ed. PHP 8 a jeho n\u00e1sledn\u00e9 verze p\u0159inesly dal\u0161\u00ed n\u00e1stroje pro v\u00fdvoj\u00e1\u0159e, zlep\u0161en\u00ed bezpe\u010dnosti a v\u00fdkonu. D\u00edky t\u011bmto zm\u011bn\u00e1m se PHP st\u00e1le dr\u017e\u00ed na \u0161pi\u010dce mezi jazyky pro v\u00fdvoj webov\u00fdch aplikac\u00ed.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Uk\u00e1zky k\u00f3du v \u010dl\u00e1nku ukazuj\u00ed, jak nov\u00e9 funkce usnad\u0148uj\u00ed pr\u00e1ci a \u010din\u00ed k\u00f3d robustn\u011bj\u0161\u00edm. Pokud st\u00e1le pou\u017e\u00edv\u00e1te PHP 7, je nejvy\u0161\u0161\u00ed \u010das na upgrade na PHP 8.4 nebo brzy na PHP 8.5.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP je jedn\u00edm z nejpou\u017e\u00edvan\u011bj\u0161\u00edch jazyk\u016f pro v\u00fdvoj webov\u00fdch aplikac\u00ed. V pr\u016fb\u011bhu let pro\u0161lo z\u00e1sadn\u00edmi zm\u011bnami, kter\u00e9 dramaticky zlep\u0161ily v\u00fdkon, bezpe\u010dnost a v\u00fdvoj\u00e1\u0159sk\u00fd komfort. Tento \u010dl\u00e1nek se zam\u011b\u0159uje na srovn\u00e1n\u00ed PHP 7 a PHP 8 a detailn\u011b analyzuje kl\u00ed\u010dov\u00e9 zm\u011bny<\/p>\n","protected":false},"author":1,"featured_media":188,"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":[57,56,4,77],"tags":[22,97,62,30,11,10,63,96],"class_list":["post-187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-docker","category-php","category-technologie","tag-devops","tag-jit","tag-nette","tag-nette3","tag-php7","tag-php8","tag-php85","tag-speed"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/josefnemec.cz\/blog\/wp-content\/uploads\/2025\/01\/DALL%C2%B7E-2025-01-13-15.21.12-A-visually-engaging-comparison-infographic-showcasing-PHP-7-PHP-8-and-PHP-8.1.-The-design-features-three-distinct-sections_-PHP-7-with-performance--e1737672390612.webp?fit=1024%2C474&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/187","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=187"}],"version-history":[{"count":1,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/187\/revisions"}],"predecessor-version":[{"id":189,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/187\/revisions\/189"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media\/188"}],"wp:attachment":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media?parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/categories?post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/tags?post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}