{"id":4150,"date":"2020-11-17T13:58:57","date_gmt":"2020-11-17T13:58:57","guid":{"rendered":"https:\/\/jchost.pl\/blog\/?p=4150"},"modified":"2025-09-10T08:37:08","modified_gmt":"2025-09-10T08:37:08","slug":"php-8","status":"publish","type":"post","link":"https:\/\/jchost.pl\/blog\/php-8\/","title":{"rendered":"PHP 8 &#8211; co nowego (wydajno\u015b\u0107)"},"content":{"rendered":"<!--themify_builder_content-->\n<div id=\"themify_builder_content-4150\" data-postid=\"4150\" class=\"themify_builder_content themify_builder_content-4150 themify_builder tf_clear\">\n                    <div  data-lazy=\"1\" class=\"module_row themify_builder_row tb_509v266 tb_first tf_w\">\n                        <div class=\"row_inner col_align_top tb_col_count_1 tf_box tf_rel\">\n                        <div  data-lazy=\"1\" class=\"module_column tb-column col-full tb_oe5g268 first\">\n                    <!-- module text -->\n<div  class=\"module module-text tb_eh1s268  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <h1 style=\"text-align: center;\">PHP 8 &#8211; co nowego (wydajno\u015b\u0107)<\/h1>    <\/div>\n<\/div>\n<!-- \/module text -->        <\/div>\n                        <\/div>\n        <\/div>\n                        <div  data-lazy=\"1\" class=\"module_row themify_builder_row tb_zjnw266 tf_w\">\n                        <div class=\"row_inner col_align_top tb_col_count_3 tf_box tf_rel\">\n                        <div  data-lazy=\"1\" class=\"module_column tb-column col4-1 tb_sprq269 first\">\n                            <\/div>\n                    <div  data-lazy=\"1\" class=\"module_column tb-column col4-2 tb_wiv1269\">\n                    <!-- module text -->\n<div  class=\"module module-text tb_23yd269  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<h2 style=\"text-align: left;\">PHP 8<\/h2>\n<p style=\"text-align: left;\">PHP 8 zosta\u0142o oficjalnie wydane 26 listopada 2020 roku. Raczej nikt \u2013 kto wie co nieco o programowaniu &#8211; nie zaprzeczy, \u017ce by\u0142a to najbardziej wyczekiwana aktualizacja tego roku. Z drugiej strony, <strong>dla w\u0142a\u015bcicieli stron internetowych nie jest ona a\u017c tak bardzo znacz\u0105ca, jak chocia\u017cby PHP 7.<\/strong><\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module image -->\n<div  class=\"module module-image tb_fruj270 image-center rounded  tf_mw\" data-lazy=\"1\">\n        <div class=\"image-wrap tf_rel tf_mw\">\n            <img loading=\"lazy\" decoding=\"async\" width=\"879\" height=\"469\" src=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png\" class=\"wp-post-image wp-image-4175\" title=\"php-8\" alt=\"php 8\" srcset=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png 879w, https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-300x160.png 300w, https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-768x410.png 768w\" sizes=\"auto, (max-width: 879px) 100vw, 879px\" \/>    \n        <\/div>\n    <!-- \/image-wrap -->\n    \n        <\/div>\n<!-- \/module image --><!-- module text -->\n<div  class=\"module module-text tb_tj3x270  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p style=\"text-align: left;\">Nie trzeba by\u0107 ekspertem by wiedzie\u0107, \u017ce rozw\u00f3j j\u0119zyka PHP trwa od przesz\u0142o 2 dekad. Nowe wersje pojawiaj\u0105 si\u0119 wtedy, gdy potrzebne s\u0105 zmiany w silniku w celu udost\u0119pnienia nowych funkcji i poprawek lub zwi\u0119kszenia wydajno\u015bci. <strong>W przypadku PHP 8 jest jednak troch\u0119 inaczej.<\/strong><\/p>\n<p style=\"text-align: left;\"><strong>Dlaczego \u201etroch\u0119\u201d?<\/strong> Najnowsza wersja nie skupia si\u0119 tylko na og\u00f3lnikowych poprawkach czy szeregu pobocznych funkcji. Przynosi ona bowiem prze\u0142omowe zmiany w ca\u0142o\u015bciowym \u2018dzia\u0142aniu\u2019 omawianego j\u0119zyka. Mowa tutaj o kompilatorze JIT (<em>Just In Time<\/em>) oraz niekt\u00f3rych funkcjach sk\u0142adni.<\/p>\n<p style=\"text-align: left;\">Trzymaj\u0105c si\u0119 naszej wieloletniej tradycji, dzisiejszy artyku\u0142 b\u0119dzie w ca\u0142o\u015bci po\u015bwi\u0119cony najnowszej wersji PHP. Opr\u00f3cz odpowiedzi na pytanie, co nowego w PHP 8, poruszymy te\u017c kwestie wydajno\u015bci.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module box -->\n<div  class=\"module module-box tb_2ga8275 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  light-blue\">\n                <div class=\"tb_text_wrap\"><p style=\"text-align: left; margin-bottom: 0px;\"><strong>Notatka:<\/strong>\u00a0JCHost.pl jest pierwszym dostawc\u0105 hostingu w Polsce, kt\u00f3ry wprowadzi\u0142 PHP 8 RC5 na swoich serwerach (22 listopada). ?<\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n<!-- module text -->\n<div  class=\"module module-text tb_3jea270  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<h3 style=\"text-align: left;\">Wydajno\u015b\u0107 <strong>PHP 8<\/strong> vs. <strong>7.4<\/strong> vs. <strong>7.0<\/strong> vs. <strong>5.6<\/strong><\/h3>\n<p style=\"text-align: left;\">Na wst\u0119pie wspomnieli\u015bmy o tym, \u017ce PHP w wersji 8.0 to co\u015b wi\u0119cej ni\u017c tylko poprawki wydajno\u015bci. Nie oznacza to jednak, \u017ce wydajno\u015b\u0107 nie uleg\u0142a poprawie. <strong>Wr\u0119cz przeciwnie!<\/strong> Podobnie jak w przypadku wszystkich poprzednich aktualizacji \u2013 widoczne jest znacz\u0105ce przy\u015bpieszenie.<\/p>\n<p style=\"text-align: left;\">Poni\u017csza grafika przedstawia wydajno\u015b\u0107 PHP 8 w por\u00f3wnaniu do <a href=\"https:\/\/jchost.pl\/blog\/php-7-4\/\">PHP 7.4<\/a>, PHP 7 oraz PHP 5.6. Testy te zosta\u0142y wykonane przez zesp\u00f3\u0142 Phoronix.com i przedstawiaj\u0105 <strong>og\u00f3lny wynik benchmark PHPBench<\/strong>.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module image -->\n<div  class=\"module module-image tb_0fe4271 image-center rounded drop-shadow  tf_mw\" data-lazy=\"1\">\n        <div class=\"image-wrap tf_rel tf_mw\">\n            <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"400\" src=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-wydajnosc-php-benchmark.png\" class=\"wp-post-image wp-image-4177\" title=\"php-8-wydajnosc-php-benchmark\" alt=\"PHP 8 - wydajnosc (php benchmark)\" srcset=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-wydajnosc-php-benchmark.png 600w, https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-wydajnosc-php-benchmark-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/>    \n        <\/div>\n    <!-- \/image-wrap -->\n    \n        <\/div>\n<!-- \/module image --><!-- module text -->\n<div  class=\"module module-text tb_vovr271  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p style=\"text-align: left;\">Omawiany benchmark dotyczy systemu opartego na serwerze Intel Core i9 9900KS. Wyniki s\u0105 u\u015brednione i uwzgl\u0119dniaj\u0105 2 testy: z w\u0142\u0105czonym oraz wy\u0142\u0105czonym <a href=\"https:\/\/jchost.pl\/blog\/opcache\/\">OPCache<\/a>.<\/p>\n<p style=\"text-align: left;\"><strong>Oto wyniki benchmark dla PHP 8.0 (dev):<\/strong><\/p>\n<ul>\n<li style=\"text-align: left;\"><strong>7,6%<\/strong> wy\u017cszy ni\u017c PHP 7.4.3<\/li>\n<li style=\"text-align: left;\"><strong>41,3%<\/strong> wy\u017cszy ni\u017c PHP 7.0.33<\/li>\n<li style=\"text-align: left;\"><strong>203,9%<\/strong> wy\u017cszy ni\u017c PHP 5.6.40<\/li>\n<\/ul>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module text -->\n<div  class=\"module module-text tb_jm6q47  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p style=\"text-align: left;\">Og\u00f3lna wydajno\u015b\u0107 (benchmark) jest dobrym odniesieniem, by pozna\u0107 wyniki wydajno\u015bciowe wzgl\u0119dem witryn internetowych. Cho\u0107 7% i 41% mo\u017cna nazwa\u0107 zauwa\u017caln\u0105 popraw\u0105, wci\u0105\u017c nie jest to najwy\u017cszy mo\u017cliwy \u2018przeskok\u2019. Przy niekt\u00f3rych zastosowaniach, wzrost mo\u017ce wynie\u015b\u0107 <strong>nawet powy\u017cej 200%!<\/strong><\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module box -->\n<div  class=\"module module-box tb_snvv212 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  yellow\">\n                <div class=\"tb_text_wrap\"><p style=\"text-align: left; margin-bottom: 0px;\"><strong>Warto wiedzie\u0107:<\/strong> PHP to j\u0119zyk wykorzystywany nie tylko do tworzenia skrypt\u00f3w dla witryn internetowych. U\u017cywa si\u0119 go te\u017c do innych zastosowa\u0144 po stronie serwera, do przetwarzania danych z wiersza polece\u0144, a nawet do tworzenia cz\u0119\u015bci oprogramowania i aplikacji.<\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n<!-- module box -->\n<div  class=\"module module-box tb_xuej121 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  orange\">\n                <div class=\"tb_text_wrap\"><p style=\"text-align: center; margin-bottom: 0px;\">Sprawd\u017a najszybszy na rynku <a style=\"color: #fff; font-weight: 600;\" href=\"https:\/\/jchost.pl\/hosting\/wordpress\/\" target=\"_blank\" rel=\"noopener\">hosting WordPress<\/a> oraz <a style=\"color: #fff; font-weight: 600;\" href=\"https:\/\/jchost.pl\/hosting\/magento\/\" target=\"_blank\" rel=\"noopener\">hosting Ecommerce<\/a> z PHP 8.<\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n<!-- module text -->\n<div  class=\"module module-text tb_4kv0271  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<h3 style=\"text-align: left;\">Co nowego w PHP 8<\/h3>\n<p style=\"text-align: left;\">PHP 8 wprowadza wa\u017cne nowo\u015bci, z kt\u00f3rych cz\u0119\u015b\u0107 dotyczy wszystkich programist\u00f3w, a <strong>cz\u0119\u015b\u0107 skupia si\u0119 na profesjonalnych zastosowaniach<\/strong> &#8211; takich jak np. rozw\u00f3j sztucznej inteligencji.<\/p>\n<p style=\"text-align: left;\">Jako \u017ce m\u00f3wimy o du\u017cej aktualizacji, istnieje szansa, \u017ce b\u0119dziemy zmuszeni wprowadzi\u0107 ulepszenia w kodzie, aby by\u0142 kompatybilny z najnowsz\u0105 wersj\u0105.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module image -->\n<div  class=\"module module-image tb_veq8272 image-center rounded drop-shadow  tf_mw\" data-lazy=\"1\">\n        <div class=\"image-wrap tf_rel tf_mw\">\n            <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"200\" src=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-co-nowego.png\" class=\"wp-post-image wp-image-4176\" title=\"php-8-co-nowego\" alt=\"php 8 - co nowego\" srcset=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-co-nowego.png 600w, https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-co-nowego-300x100.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/>    \n        <\/div>\n    <!-- \/image-wrap -->\n    \n        <\/div>\n<!-- \/module image --><!-- module text -->\n<div  class=\"module module-text tb_ifci233  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p style=\"text-align: left;\">W tym miejscu nale\u017cy zaznaczy\u0107, \u017ce je\u015bli byli\u015bmy na bie\u017c\u0105co z nowymi wydaniami PHP, przej\u015bcie na PHP 8 nie powinno by\u0107 dramatem. Wi\u0119kszo\u015b\u0107 zmian zosta\u0142a ju\u017c bowiem wcze\u015bniej wycofana w wersjach 7.x. <strong>Ale do rzeczy!<\/strong><\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module text -->\n<div  class=\"module module-text tb_sbu0493  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p style=\"text-align: left;\"><strong>Oto, co nowego w PHP 8:<\/strong><\/p>\n<p>\u00a0<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module text -->\n<div  class=\"module module-text tb_f4yu272  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <h4 style=\"text-align: left;\"><strong>JIT (<em>kompilator Just In Time<\/em>)<\/strong><\/h4>\n<p style=\"text-align: left;\">Kompilator JIT jest jedn\u0105 z najcz\u0119\u015bciej opisywanych nowo\u015bci w PHP 8 \u2013 pomimo, \u017ce by\u0142 ju\u017c dost\u0119pny do \u2018eksperyment\u00f3w\u2019 w PHP 7.4 (domy\u015blnie w trybie wy\u0142\u0105czonym).<\/p>\n<p style=\"text-align: left;\"><strong>O co chodzi?<\/strong> PHP to tzw. j\u0119zyk interpretowany, co oznacza, \u017ce \u2018dzia\u0142a w czasie rzeczywistym\u2019, a sam kod nie jest kompilowany. JIT ma za zadanie to zmieni\u0107, zwi\u0119kszaj\u0105c przy tym wydajno\u015b\u0107.<\/p>\n<p style=\"text-align: left;\"><strong>Czy to a\u017c tak wa\u017cne?<\/strong> W wi\u0119kszo\u015bci przypadk\u00f3w \u2013 nie. Gdy mowa np. o skryptach na stronach internetowych, JIT nie robi ogromnej r\u00f3\u017cnicy. Inaczej jest, gdy na celowniku mamy renderowanie 3D czy obszern\u0105 analiz\u0119 danych.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module box -->\n<div  class=\"module module-box tb_pbl6532 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  yellow\">\n                <div class=\"tb_text_wrap\"><p style=\"text-align: left; margin-bottom: 0px;\"><strong>Warto wiedzie\u0107:<\/strong> PHP JIT zosta\u0142 zaimplementowany jako prawie \u017ce niezale\u017cny komponent OPcache. Mo\u017ce by\u0107 w\u0142\u0105czany lub wy\u0142\u0105czany w czasie kompilacji PHP oraz w czasie wykonywania. Po w\u0142\u0105czeniu, natywny kod jest przechowywany w dodatkowym regionie pami\u0119ci wsp\u00f3\u0142dzielonej.<\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n<!-- module text -->\n<div  class=\"module module-text tb_wkt8338  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p style=\"text-align: left;\">\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>Union Types 2.0 (<em>typy unii<\/em>)<\/strong><\/h4>\n<p style=\"text-align: left;\">Typy s\u0105 kluczow\u0105 cz\u0119\u015bci\u0105 PHP. Dzi\u0119ki nim mo\u017cemy przypisa\u0107 zmienn\u0105 jako liczb\u0119 ca\u0142kowit\u0105, warto\u015b\u0107 logiczn\u0105, null, itd.<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">class Number {\n\tprivate int|float $number;\n\n\tpublic function setNumber(int|float $number): void {\n\t\t$this-&gt;number = $number;\n\t}\n\n\tpublic function getNumber(): int|float {\n\t\treturn $this-&gt;number;\n\t}\n}<\/span> <\/code><\/pre>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\">W poprzednich wersjach istnia\u0142a mo\u017cliwo\u015b\u0107 przypisania tylko jednego typu zmiennej. Wraz z aktualizacj\u0105 do PHP 8, mo\u017cemy przypisa\u0107 dwa lub wi\u0119cej typ\u00f3w. Tym samym nie ma potrzeby u\u017cywania adnotacji PHPDoc, nazywanej przez wiele os\u00f3b \u201eniepor\u0119cznym obej\u015bciem\u201d.<\/p>\n<p>\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>WeakMaps (<em>s\u0142abe mapy<\/em>)<\/strong><\/h4>\n<p style=\"text-align: left;\">WeakMap to zbi\u00f3r obiekt\u00f3w, do kt\u00f3rych istniej\u0105 tzw. s\u0142abe odwo\u0142ania kluczy, kt\u00f3re nie s\u0105 usuwane jako elementy bezu\u017cyteczne.<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$map = new WeakMap;\n$obj = new stdClass;\n$map[$obj] = 42;\nvar_dump($map);<\/span> <\/code><\/pre>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\">Omawiane mapy s\u0105 rozszerzeniem funkcji WeakRefs z PHP 7.4. Obie funkcjonalno\u015bci nios\u0105 za sob\u0105 wiele zalet &#8211; najwa\u017cniejsz\u0105 jest skr\u00f3cenie czasu oczekiwania na zapytanie, co jednocze\u015bnie oznacza wzrost wydajno\u015bci.<\/p>\n<p>\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>Attributes v2 (<em>atrybuty<\/em>)<\/strong><\/h4>\n<p style=\"text-align: left;\">Od teraz j\u0119zyk PHP b\u0119dzie obs\u0142ugiwa\u0142 atrybuty, czyli ma\u0142e fragmenty metadanych, kt\u00f3re dodaje si\u0119 do cz\u0119\u015bci kodu (np. funkcje, klasy, parametry, \u2026).<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Foo<\/span>\n<span class=\"token punctuation\">{<\/span>\n\t<span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span>\n\t<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token constant\">FOO<\/span> <span class=\"token operator\">=<\/span> <span class=\"token single-quoted-string string\">'foo'<\/span><span class=\"token punctuation\">;<\/span>\n\n\t<span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span>\n\t<span class=\"token keyword\">public<\/span> <span class=\"token variable\">$x<\/span><span class=\"token punctuation\">;<\/span>\n\n\t<span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span>\n\t<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token function\">foo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token variable\">$bar<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token variable\">$object<\/span> <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">f1<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span>\n\n<span class=\"token variable\">$f2<\/span> <span class=\"token operator\">=<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">function<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token variable\">$f3<\/span> <span class=\"token operator\">=<\/span> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span> fn <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">=<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>ExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span>\n<span class=\"token comment\">\/** docblock *\/<\/span>\n<span class=\"token operator\">&lt;<\/span><span class=\"token operator\">&lt;<\/span>AnotherExampleAttribute<span class=\"token operator\">&gt;<\/span><span class=\"token operator\">&gt;<\/span>\n<span class=\"token keyword\">function<\/span> <span class=\"token function\">foo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\">Programi\u015bci nie musz\u0105 ju\u017c wi\u0119c u\u017cywa\u0107 tzw. obej\u015bcia docblocks. Mog\u0105 doda\u0107 atrybuty w dowolnym miejscu, zaimportowa\u0107 je za pomoc\u0105 use, a nawet konfigurowa\u0107 ich parametry.<\/p>\n<p>\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>Match Expression (<em>wyra\u017cenia dopasowania<\/em>)<\/strong><\/h4>\n<p style=\"text-align: left;\">Wyra\u017cenia dopasowania s\u0105 przez niekt\u00f3rych programist\u00f3w uznawane za jedn\u0105 z najprzyjemniejszych funkcji w PHP 8, kt\u00f3ra ma poprawi\u0107 sk\u0142adni\u0119.<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">$result = match($input) {\n0 =&gt; \"hello\",\n'1', '2', '3' =&gt; \"world\",\n};<\/span> <\/code><\/pre>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\">Mo\u017cna je nazwa\u0107 ulepszon\u0105 wersj\u0105 dopasowa\u0144 switch. Mog\u0105 one zwraca\u0107 warto\u015bci, \u0142\u0105czy\u0107 warunki, nie potrzebuj\u0105c przy tym d\u0142ugich instrukcji. Pod wieloma wzgl\u0119dami jest po prostu lepiej i bardziej przejrzy\u015bcie!<\/p>\n<p>\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>Static Return and Mixed Types (<em>statyczne zwroty i typy mieszane<\/em>)<\/strong><\/h4>\n<p style=\"text-align: left;\">Zwroty w PHP s\u0142u\u017c\u0105 do zwracania warto\u015bci funkcji. W ich przypadku, pewnym utrudnieniem by\u0142a niekompatybilno\u015b\u0107 z typem statycznym (self i parent \u2013 tak, static \u2013 nie). Nadej\u015bcie PHP 8.0 za\u017cegnuje ten problem.<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">class Foo\n{\npublic function test(): static\n{\n     return new static();\n}\n}<\/span> <\/code><\/pre>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\">Cz\u0119\u015bciowo powi\u0105zany z powy\u017cszym jest te\u017c nowy typ mieszany, tzw. pseudotyp, kt\u00f3ry reprezentuje wszystkie inne typy w PHP. Mo\u017cna go wykorzysta\u0107, je\u015bli b\u0119dziemy zmuszeni pracowa\u0107 z kilkoma r\u00f3\u017cnymi typami i nie b\u0119dziemy mogli by\u0107 zbyt \u2018szczeg\u00f3\u0142owi\u2019.<\/p>\n<p style=\"text-align: left;\">Nale\u017cy r\u00f3wnie\u017c pami\u0119ta\u0107, \u017ce poniewa\u017c <code><span class=\"hljs-highlight type\">mixed<\/span><\/code> zawiera ju\u017c <code><span class=\"hljs-highlight type\">null<\/span><\/code>, nie mo\u017cna nadawa\u0107 mu tej warto\u015bci ponownie. <span class=\"\">W innym wypadku, wyst\u0105pi b\u0142\u0105d:<\/span><\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">function bar(): ?mixed {}\n\/\/ Fatal error: Mixed types cannot be nullable, null is already part of the mixed type.<\/span> <\/code><\/pre>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module box -->\n<div  class=\"module module-box tb_vkg3536 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  yellow\">\n                <div class=\"tb_text_wrap\"><p style=\"text-align: left; margin-bottom: 0px;\"><strong>Warto wiedzie\u0107:<\/strong> W wielu sytuacjach bardziej rozs\u0105dnym rozwi\u0105zaniem b\u0119dzie wykorzystanie nowego typu unii, zamiast mieszanego.<\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n<!-- module text -->\n<div  class=\"module module-text tb_e721517  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>Named arguments (<em>nazwane argumenty<\/em>)<\/strong><\/h4>\n<p style=\"text-align: left;\">Powszechnie wiadomo, \u017ce argumenty PHP pozwalaj\u0105 na przekazywanie danych do funkcji, bez przekazania domy\u015blnych warto\u015bci. PHP 8 to zmienia.<\/p>\n<pre class=\" language-php\"><code class=\" language-php\"><span class=\"token variable\">function foo(string $a, string $b, ?string $c = null, ?string $d = null)\n{ \/* \u2026 *\/ }\nfoo(\nb: 'value b',\na: 'value a',\nd: 'value d',\n);<\/span> <\/code><\/pre>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\">Gdyby dos\u0142ownie przet\u0142umaczy\u0107 oficjalne doniesienia, nazwane argumenty po prostu pozwalaj\u0105 na przekazanie parametru na podstawie jego nazwy, zamiast \u2018kolejno\u015bci\u2019. W praktyce oznacza to czystszy i bardziej zwi\u0119z\u0142y kod.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module text -->\n<div  class=\"module module-text tb_fqsi496  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<h3 style=\"text-align: left;\">Inne zmiany i nowe funkcje<\/h3>\n<p style=\"text-align: left;\">Opr\u00f3cz prze\u0142omowych zmian i nowo\u015bci, PHP 8 oferuje r\u00f3wnie\u017c szereg poprawek w dotychczasowych funkcjach. Lista zmian zawiera kilkadziesi\u0105t (lub kilkaset \u2013 zale\u017cnie od punktu widzenia) pozycji. Opisanie ich wszystkich w naszym poradniku <strong>by\u0142oby co najmniej problematyczne<\/strong>.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module image -->\n<div  class=\"module module-image tb_3j9o273 image-center rounded drop-shadow  tf_mw\" data-lazy=\"1\">\n        <div class=\"image-wrap tf_rel tf_mw\">\n            <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"200\" src=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-zmiany.png\" class=\"wp-post-image wp-image-4178\" title=\"php-8-zmiany\" alt=\"php 8 - zmiany\" srcset=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-zmiany.png 600w, https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8-zmiany-300x100.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/>    \n        <\/div>\n    <!-- \/image-wrap -->\n    \n        <\/div>\n<!-- \/module image --><!-- module text -->\n<div  class=\"module module-text tb_ppu5273  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p style=\"text-align: left;\">Zdecydowali\u015bmy si\u0119 wi\u0119c podzieli\u0107 pozosta\u0142e nowinki na cz\u0119\u015bci i opisa\u0107 te pozycje, kt\u00f3re albo s\u0105 kluczowe (b\u0105d\u017a interesuj\u0105ce), albo mog\u0105 powodowa\u0107 b\u0142\u0119dy podczas aktualizacji lub przenoszenia aplikacji do starszych wersji.<\/p>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\"><strong>Oto lista nowych funkcji:<\/strong><\/p>\n<ul>\n<li style=\"text-align: left;\"><code>str_starts_with<\/code> oraz <code>str_ends_with<\/code>\u00a0\u2013 funkcja, kt\u00f3ra sprawdza, czy ci\u0105g zaczyna lub ko\u0144czy si\u0119 okre\u015blon\u0105 lini\u0105.<\/li>\n<li style=\"text-align: left;\"><code>str_contains<\/code>\u00a0\u2013 funkcja o tym samym dzia\u0142aniu co poprzedniczka, z tym \u017ce sprawdza ca\u0142y ci\u0105g.<\/li>\n<li style=\"text-align: left;\"><code>fdiv<\/code>\u00a0\u2013 funkcja zwi\u0105zana z dzieleniem, kt\u00f3ra reaguje na dzielenie przez zero.<\/li>\n<li style=\"text-align: left;\"><code>get_resource_id<\/code>\u00a0\u2013 funkcja s\u0142u\u017c\u0105ca do uzyskania identyfikatora zasobu (np. po\u0142\u0105czenie z baz\u0105 danych).<\/li>\n<li style=\"text-align: left;\"><code>get_debug_type <\/code>\u2013 funkcja zbli\u017cona do funkcji <code>gettype<\/code>, z tym \u017ce zwraca wi\u0119cej informacji (np. nazwa klasy).<\/li>\n<li style=\"text-align: left;\"><code>preg_last_error_msg<\/code>\u00a0\u2013 funkcja, kt\u00f3ra odpowiada za wy\u015bwietlanie czytelnego dla cz\u0142owieka komunikatu o b\u0142\u0119dzie.<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\"><strong>Oto lista innych, kluczowych zmian:<\/strong><\/p>\n<ul>\n<li style=\"text-align: left;\"><strong>Nazwy Namespaced:<\/strong> Wraz z nadej\u015bciem wersji 8, nazwy staj\u0105 si\u0119 pojedynczym tokenem i nie mog\u0105 ju\u017c mie\u0107 wewn\u0105trz bia\u0142ych znak\u00f3w.<\/li>\n<li style=\"text-align: left;\"><strong>TypeError:<\/strong> Od teraz TypeError b\u0119dzie konsekwentnie podkre\u015bla\u0142 i pokazywa\u0142 funkcje wewn\u0119trzne, co ma ogromny wp\u0142yw na tzw. kompatybilno\u015b\u0107 wsteczn\u0105.<\/li>\n<li style=\"text-align: left;\"><strong><code>__construct()<\/code>:<\/strong> Do tej pory metody o nazwie pasuj\u0105cej do klasy by\u0142y interpretowane jako konstruktory. By to zmieni\u0107, wprowadzono metod\u0119 <code>__construct()<\/code>.<\/li>\n<li style=\"text-align: left;\"><strong>Nullsafe:<\/strong> Operator Nullsafe ma za zadanie poprawi\u0107 czytelno\u015b\u0107 kodu. Mo\u017cemy u\u017cy\u0107 znaku <code>?<\/code>, aby napisa\u0107 wszystkie instrukcje, zamiast wykorzystywa\u0107 <code>if<\/code>.<\/li>\n<li style=\"text-align: left;\"><strong>Constructor Property Promotion:<\/strong> Ta tzw. \u2019promocja\u2019 poprawia sk\u0142adni\u0119 i pozwala \u0142\u0105czy\u0107 w\u0142a\u015bciwo\u015bci klasy i konstruktora w jedno.<\/li>\n<li style=\"text-align: left;\"><strong>Throw expression:<\/strong> Od teraz throw nie jest ju\u017c instrukcj\u0105, a wyra\u017ceniem. Umo\u017cliwia to dodawanie wyj\u0105tk\u00f3w w wielu nowych, niedost\u0119pnych wcze\u015bniej miejscach.<\/li>\n<li style=\"text-align: left;\"><strong>Rozwini\u0119cie <code>:: class<\/code>:<\/strong> W PHP 8 mo\u017cemy zaimplementowa\u0107 <code>:: class<\/code> na obiektach, zamiast u\u017cywa\u0107 metody <code>get_class()<\/code>.<\/li>\n<li style=\"text-align: left;\"><strong>Ko\u0144cowy przecinek:<\/strong> Dzi\u0119ki aktualizacji, mamy przyzwolenie na opcjonalny, ko\u0144cowy przecinek na li\u015bcie parametr\u00f3w. Obejmuje to listy funkcji, metod i \u2018domkni\u0119\u0107\u2019.<\/li>\n<li style=\"text-align: left;\"><strong>Niezgodne sygnatury metod:<\/strong> Z pocz\u0105tkiem wersji 8, silnik PHP b\u0119dzie zawsze zg\u0142asza\u0107 b\u0142\u0105d krytyczny dla niezgodnych sygnatur metod.<\/li>\n<li style=\"text-align: left;\"><strong>Rozszerzenie JSON:<\/strong> Wcze\u015bniej JSON mog\u0142o zosta\u0107 wy\u0142\u0105czone. Od PHP 8 w g\u00f3r\u0119, owe rozszerzenie b\u0119dzie zawsze aktywne.<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p style=\"text-align: left;\"><strong>Oto lista og\u00f3lnych poprawek:<\/strong><\/p>\n<ul>\n<li style=\"text-align: left;\"><strong>Ostrze\u017cenia:<\/strong> Ostrze\u017cenia silnika PHP zosta\u0142y przeklasyfikowane, aby pokazywa\u0142y odpowiedni poziom istotno\u015bci (np. b\u0142\u0119dy krytyczne, powiadomienia, ostrze\u017cenia, \u2026).<\/li>\n<li style=\"text-align: left;\"><strong>Raportowanie:<\/strong> Raportowanie b\u0142\u0119d\u00f3w uleg\u0142o znacz\u0105cej przebudowie. Niekt\u00f3re b\u0142\u0119dy, kt\u00f3re wcze\u015bniej by\u0142y ciche i ignorowane, od teraz mog\u0105 pojawi\u0107 si\u0119 na naszym ekranie.<\/li>\n<li style=\"text-align: left;\"><strong>Sortowanie:<\/strong> Sortowanie w silniku PHP jest uznawane za stabilne i niezawodne. Mimo to, PHP 7.0 wprowadzi\u0142o du\u017ce zmiany, kt\u00f3re PHP 8.0 w pewnym sensie rozszerza.<\/li>\n<\/ul>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module text -->\n<div  class=\"module module-text tb_g0af274  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p style=\"text-align: left;\">\u00a0<\/p>\n<p>\u00a0<\/p>\n<h3 style=\"text-align: left;\">Jak ustawi\u0107 PHP 8 na stronie?<\/h3>\n<p style=\"text-align: left;\">W przypadku strony internetowej, ustawienie PHP 8.0 jest naprawd\u0119 bardzo proste! Ca\u0142a operacja ogranicza si\u0119 do kilku klikni\u0119\u0107, zajmuje p\u00f3\u0142 minuty i odbywa si\u0119 w panelu hostingowym naszej witryny.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module box -->\n<div  class=\"module module-box tb_3nfp615 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  yellow\">\n                <div class=\"tb_text_wrap\"><p style=\"text-align: left; margin-bottom: 0px;\"><strong>Warto wiedzie\u0107:<\/strong> W przypadku zmiany wersji PHP, kopia zapasowa witryny nie jest konieczna. W razie wyst\u0105pienia b\u0142\u0119d\u00f3w HTTP, wystarczy zmieni\u0107 wersj\u0119 na t\u0119, kt\u00f3ra by\u0142a u\u017cywana wcze\u015bniej.<\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n<!-- module text -->\n<div  class=\"module module-text tb_sr97275  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>Krok 1<\/strong><\/h4>\n<p style=\"text-align: left;\">Otw\u00f3rz sw\u00f3j panel hostingowy, wybierz zak\u0142adk\u0119<strong> \u201eDodatkowe funkcje\u201d<\/strong> i kliknij w\u00a0 <strong>\u201eSelect PHP version\u201d<\/strong>.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module image -->\n<div  class=\"module module-image tb_h4i5275 image-center rounded drop-shadow  tf_mw\" data-lazy=\"1\">\n        <div class=\"image-wrap tf_rel tf_mw\">\n            <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"419\" src=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/zmiana-php-8-w-panelu-hostingowym.png\" class=\"wp-post-image wp-image-4186\" title=\"zmiana-php-8-w-panelu-hostingowym\" alt=\"zmiana php 8 w panelu hostingowym\" srcset=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/zmiana-php-8-w-panelu-hostingowym.png 600w, https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/zmiana-php-8-w-panelu-hostingowym-300x210.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/>    \n        <\/div>\n    <!-- \/image-wrap -->\n    \n        <\/div>\n<!-- \/module image --><!-- module text -->\n<div  class=\"module module-text tb_6oo8275  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<h4 style=\"text-align: left;\"><strong>Krok 2<\/strong><\/h4>\n<p style=\"text-align: left;\">W polu wyboru <strong>\u201eBie\u017c\u0105ca wersja PHP\u201d,<\/strong> wybierz warto\u015b\u0107<strong> \u201e8.0\u201d<\/strong> i kliknij przycisk <strong>\u201eUstaw jako bie\u017c\u0105c\u0105\u201d<\/strong>\u00a0&#8211; widoczny po prawej stronie.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module image -->\n<div  class=\"module module-image tb_vb93275 image-center rounded drop-shadow  tf_mw\" data-lazy=\"1\">\n        <div class=\"image-wrap tf_rel tf_mw\">\n            <img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"625\" src=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/ustawienia-php-8.png\" class=\"wp-post-image wp-image-4185\" title=\"ustawienia-php-8\" alt=\"ustawienia php 8\" srcset=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/ustawienia-php-8.png 600w, https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/ustawienia-php-8-288x300.png 288w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/>    \n        <\/div>\n    <!-- \/image-wrap -->\n    \n        <\/div>\n<!-- \/module image --><!-- module text -->\n<div  class=\"module module-text tb_7fcc686  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<h3 style=\"text-align: left;\">Podsumowanie<\/h3>\n<p style=\"text-align: left;\">PHP 8 to powa\u017cna aktualizacja najpopularniejszego j\u0119zyka skryptowego na \u015bwiecie. Uwzgl\u0119dnia ona kilka prze\u0142omowych nowo\u015bci, dziesi\u0105tki istotnych zmian i setki pobocznych poprawek. Do najcz\u0119\u015bciej opisywanych nale\u017c\u0105 zdecydowanie JIT oraz typy unii.<\/p>\n<p style=\"text-align: left;\">Opisanie wszystkich zmian w wersji 8.0 by\u0142oby ci\u0119\u017ckie i niepotrzebne. By\u0142oby to wtedy nic innego, ni\u017c polskie t\u0142umaczenie oficjalnych changelog\u2019\u00f3w. Dlatego te\u017c po wi\u0119cej informacji zapraszamy na oficjaln\u0105 stron\u0119 <a href=\"https:\/\/wiki.php.net\/todo\/php80\">wiki PHP 8<\/a>.<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module text -->\n<div  class=\"module module-text tb_4ara276  repeat \" data-lazy=\"1\">\n        <div  class=\"tb_text_wrap\">\n        <p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>    <\/div>\n<\/div>\n<!-- \/module text --><!-- module box -->\n<div  class=\"module module-box tb_hsee276 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  light-green\">\n                <div class=\"tb_text_wrap\"><p>Odbieramy telefony, odpisujemy na maile, nie ukrywamy koszt\u00f3w, a dodatkowo oferujemy najszybsze pakiety hostingowe na rynku. Uwa\u017casz, \u017ce to zwroty marketingowe? Sprawd\u017a sam\/a!<\/p>\n<p>Je\u015bli nie b\u0119dziesz zadowolony\/a, zwr\u00f3cimy Ci pieni\u0105dze.<br \/><strong>Twoje strony i sklepy przeniesiemy za darmo!<\/strong><\/p>\n<p><a style=\"color: #fff; font-weight: 600;\" href=\"https:\/\/jchost.pl\/hosting\/wordpress\/\" target=\"_blank\" rel=\"noopener\">Hosting WordPress<\/a> &#8211; <a style=\"color: #fff; font-weight: 600;\" href=\"https:\/\/jchost.pl\/hosting\/magento\/\" target=\"_blank\" rel=\"noopener\">Hosting Magento<\/a><\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n<!-- module box -->\n<div  class=\"module module-box tb_2d9l277 \" data-lazy=\"1\">\n    <div class=\"module-box-content ui  tb_default_color\">\n                <div class=\"tb_text_wrap\"><p>Je\u017celi masz jakiekolwiek pytania, skontaktuj si\u0119 z nami! <a href=\"https:\/\/jchost.pl\/kontakt\/\" target=\"_blank\" rel=\"noopener\">Kliknij tutaj<\/a>.<\/p>\n<p>Chcesz dowiedzie\u0107 si\u0119 o nas troch\u0119 wi\u0119cej? Przejd\u017a na <a href=\"https:\/\/www.jchost.pl\/\" target=\"_blank\" rel=\"noopener\">stron\u0119 JCHost.pl<\/a>.<\/p><\/div>\n    <\/div>\n<\/div>\n<!-- \/module box -->\n        <\/div>\n                    <div  data-lazy=\"1\" class=\"module_column tb-column col4-1 tb_6a76277 last\">\n                            <\/div>\n                        <\/div>\n        <\/div>\n        <\/div>\n<!--\/themify_builder_content-->","protected":false},"excerpt":{"rendered":"<p>PHP 8 &#8211; co nowego (wydajno\u015b\u0107) \u00a0 PHP 8 PHP 8 zosta\u0142o oficjalnie wydane 26 listopada 2020 roku. Raczej nikt \u2013 kto wie co nieco o programowaniu &#8211; nie zaprzeczy, \u017ce by\u0142a to najbardziej wyczekiwana aktualizacja tego roku. Z drugiej strony, dla w\u0142a\u015bcicieli stron internetowych nie jest ona a\u017c tak bardzo znacz\u0105ca, jak chocia\u017cby PHP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4175,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4150","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PHP 8 - co nowego (wydajno\u015b\u0107) - JCHost.pl<\/title>\n<meta name=\"description\" content=\"PHP 8 to jedna z najciekawszych aktualizacji w 2020 roku. Zobacz, co nowego, oraz poznaj kluczowe zmiany i poprawki!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jchost.pl\/blog\/php-8\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8 ju\u017c jest - zobacz, co nowego!\" \/>\n<meta property=\"og:description\" content=\"Wejd\u017a na bloga, by pozna\u0107 zmiany i poprawki \u2192\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jchost.pl\/blog\/php-8\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog o hostingu i dla hostingu\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/jchostpl\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-17T13:58:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-10T08:37:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png\" \/>\n\t<meta property=\"og:image:width\" content=\"879\" \/>\n\t<meta property=\"og:image:height\" content=\"469\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ekipa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ekipa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/\"},\"author\":{\"name\":\"Ekipa\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#\\\/schema\\\/person\\\/5c0718f08eb37ba283bce590a6a97475\"},\"headline\":\"PHP 8 &#8211; co nowego (wydajno\u015b\u0107)\",\"datePublished\":\"2020-11-17T13:58:57+00:00\",\"dateModified\":\"2025-09-10T08:37:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/\"},\"wordCount\":1861,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/php-8.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/\",\"url\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/\",\"name\":\"PHP 8 - co nowego (wydajno\u015b\u0107) - JCHost.pl\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/php-8.png\",\"datePublished\":\"2020-11-17T13:58:57+00:00\",\"dateModified\":\"2025-09-10T08:37:08+00:00\",\"description\":\"PHP 8 to jedna z najciekawszych aktualizacji w 2020 roku. Zobacz, co nowego, oraz poznaj kluczowe zmiany i poprawki!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/php-8.png\",\"contentUrl\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/php-8.png\",\"width\":879,\"height\":469},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/php-8\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP 8 &#8211; co nowego (wydajno\u015b\u0107)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/\",\"name\":\"Blog o hostingu i dla hostingu\",\"description\":\"Blog hostingowy dla ka\u017cdego!\",\"publisher\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#organization\",\"name\":\"blog.jchost.pl\",\"url\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/11\\\/blog-hostingowy-logo-JCHost.jpg\",\"contentUrl\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/11\\\/blog-hostingowy-logo-JCHost.jpg\",\"width\":229,\"height\":80,\"caption\":\"blog.jchost.pl\"},\"image\":{\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/jchostpl\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC6myB18cMX1a5bAJ6WChQPw\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/#\\\/schema\\\/person\\\/5c0718f08eb37ba283bce590a6a97475\",\"name\":\"Ekipa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6b555ed5d05df6e3eab514d0387177f840ba1c281811baacd9c8f74fb1a0661d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6b555ed5d05df6e3eab514d0387177f840ba1c281811baacd9c8f74fb1a0661d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6b555ed5d05df6e3eab514d0387177f840ba1c281811baacd9c8f74fb1a0661d?s=96&d=mm&r=g\",\"caption\":\"Ekipa\"},\"url\":\"https:\\\/\\\/jchost.pl\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP 8 - co nowego (wydajno\u015b\u0107) - JCHost.pl","description":"PHP 8 to jedna z najciekawszych aktualizacji w 2020 roku. Zobacz, co nowego, oraz poznaj kluczowe zmiany i poprawki!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jchost.pl\/blog\/php-8\/","og_locale":"pl_PL","og_type":"article","og_title":"PHP 8 ju\u017c jest - zobacz, co nowego!","og_description":"Wejd\u017a na bloga, by pozna\u0107 zmiany i poprawki \u2192","og_url":"https:\/\/jchost.pl\/blog\/php-8\/","og_site_name":"Blog o hostingu i dla hostingu","article_publisher":"https:\/\/www.facebook.com\/jchostpl\/","article_published_time":"2020-11-17T13:58:57+00:00","article_modified_time":"2025-09-10T08:37:08+00:00","og_image":[{"width":879,"height":469,"url":"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png","type":"image\/png"}],"author":"Ekipa","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Ekipa","Szacowany czas czytania":"10 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jchost.pl\/blog\/php-8\/#article","isPartOf":{"@id":"https:\/\/jchost.pl\/blog\/php-8\/"},"author":{"name":"Ekipa","@id":"https:\/\/jchost.pl\/blog\/#\/schema\/person\/5c0718f08eb37ba283bce590a6a97475"},"headline":"PHP 8 &#8211; co nowego (wydajno\u015b\u0107)","datePublished":"2020-11-17T13:58:57+00:00","dateModified":"2025-09-10T08:37:08+00:00","mainEntityOfPage":{"@id":"https:\/\/jchost.pl\/blog\/php-8\/"},"wordCount":1861,"commentCount":0,"publisher":{"@id":"https:\/\/jchost.pl\/blog\/#organization"},"image":{"@id":"https:\/\/jchost.pl\/blog\/php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png","articleSection":["Uncategorized"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/jchost.pl\/blog\/php-8\/","url":"https:\/\/jchost.pl\/blog\/php-8\/","name":"PHP 8 - co nowego (wydajno\u015b\u0107) - JCHost.pl","isPartOf":{"@id":"https:\/\/jchost.pl\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jchost.pl\/blog\/php-8\/#primaryimage"},"image":{"@id":"https:\/\/jchost.pl\/blog\/php-8\/#primaryimage"},"thumbnailUrl":"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png","datePublished":"2020-11-17T13:58:57+00:00","dateModified":"2025-09-10T08:37:08+00:00","description":"PHP 8 to jedna z najciekawszych aktualizacji w 2020 roku. Zobacz, co nowego, oraz poznaj kluczowe zmiany i poprawki!","breadcrumb":{"@id":"https:\/\/jchost.pl\/blog\/php-8\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jchost.pl\/blog\/php-8\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/jchost.pl\/blog\/php-8\/#primaryimage","url":"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png","contentUrl":"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2020\/11\/php-8.png","width":879,"height":469},{"@type":"BreadcrumbList","@id":"https:\/\/jchost.pl\/blog\/php-8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/jchost.pl\/blog\/"},{"@type":"ListItem","position":2,"name":"PHP 8 &#8211; co nowego (wydajno\u015b\u0107)"}]},{"@type":"WebSite","@id":"https:\/\/jchost.pl\/blog\/#website","url":"https:\/\/jchost.pl\/blog\/","name":"Blog o hostingu i dla hostingu","description":"Blog hostingowy dla ka\u017cdego!","publisher":{"@id":"https:\/\/jchost.pl\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jchost.pl\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/jchost.pl\/blog\/#organization","name":"blog.jchost.pl","url":"https:\/\/jchost.pl\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/jchost.pl\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2017\/11\/blog-hostingowy-logo-JCHost.jpg","contentUrl":"https:\/\/jchost.pl\/blog\/wp-content\/uploads\/2017\/11\/blog-hostingowy-logo-JCHost.jpg","width":229,"height":80,"caption":"blog.jchost.pl"},"image":{"@id":"https:\/\/jchost.pl\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/jchostpl\/","https:\/\/www.youtube.com\/channel\/UC6myB18cMX1a5bAJ6WChQPw"]},{"@type":"Person","@id":"https:\/\/jchost.pl\/blog\/#\/schema\/person\/5c0718f08eb37ba283bce590a6a97475","name":"Ekipa","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/6b555ed5d05df6e3eab514d0387177f840ba1c281811baacd9c8f74fb1a0661d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6b555ed5d05df6e3eab514d0387177f840ba1c281811baacd9c8f74fb1a0661d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6b555ed5d05df6e3eab514d0387177f840ba1c281811baacd9c8f74fb1a0661d?s=96&d=mm&r=g","caption":"Ekipa"},"url":"https:\/\/jchost.pl\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/posts\/4150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/comments?post=4150"}],"version-history":[{"count":36,"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/posts\/4150\/revisions"}],"predecessor-version":[{"id":7820,"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/posts\/4150\/revisions\/7820"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/media\/4175"}],"wp:attachment":[{"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/media?parent=4150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/categories?post=4150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jchost.pl\/blog\/wp-json\/wp\/v2\/tags?post=4150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}