PHP версия 7.3 е налична на всички сървъри на ICDSoft и е активна по подразбиране за всички нови хостинг акаунти. Ако сте съществуващ клиент, можете лесно да смените версията от секция PHP настройки -> стандартен PHP интерпретатор, във Вашия Контролен панел. С добавянето на PHP 7.3, поддържаме общо пет версии  на PHP на нашите сървъри, а именно:

  •  PHP 7.3
  •  PHP 7.2
  •  PHP 7.1
  •  PHP 5.6
  •  PHP 5.3

Съдържание

Как да смените PHP версията за Вашия хостинг акаунт

Смяната на PHP версията е много лесна с всеки план, предлаган от ICDSoft. Цъкнете върху долното изображение, за да видите кратко видео как става това:

Когато сменихме версията на PHP 7.3 за нашия собствен блог, главната му страница започна да се зарежда с около 6% по-бързо в сравнение с PHP 7.2. За сайтове, които още работят на версия 5.6, производителността може да скочи драстично (времето за изпълнение на скриптове може да се съкрати наполовина).

PHP 7.3 - дата на излизане

PHP 7.3 излезе през декември 2018 и това бе оповестено на официалния му сайт: https://www.php.net/releases/7_3_0.php

В интерес на истината, обмисляхме да добавим тази версия още тогава, но опитът ни показва, че след излизането на всяка нова версия на PHP е нужно известно време, за да се нагодят към нея софтуерните разработчици. WordPress бяха сред първите поддръжници на новата версия и дори PHP 7.3 се споменава на сайта им като препоръчаната версия за хостване на WordPress сайт. За съжаление, много теми и плъгини не бяха съвместими с тази версия по това време. Ако разработвате теми или плъгини за WordPress, можете да видите повече информация относно тяхната съвместимост с PHP 7.3 в следната статия:

Ако използвате тема и/или плъгин, несъвместими с PHP 7.3, можете да пратите статията на техния разработчик.

PHP 7.3 - основни промени

Макар че обновяването на версията не е толкова голямо, колкото при PHP 7.0 или дори PHP 7.2, има някои промени в кода, както и нови функционалности. Ето и по-важните от тях:

Промени в Heredoc и Nowdoc синтаксиса

Това е една от по-важните промени в PHP 7.3, а именно - обработването на heredoc и nowdoc синтаксиса е подобрено и по-гъвкаво.

Отстъп за затварящия маркер

Преди PHP 7.3

<?php
class foo {
    public $bar = <<<EOT
bar
EOT;
}

PHP 7.3

<?php
class foo {
    public $bar = <<<EOT
        bar
    EOT;
}

Накратко, в PHP 7.3 можете да добавяте отстъп пред затварящия маркер ( EOT; ) като той определя какъв отстъп ще имат и останалите редове във функцията. Тъй като отстъпи не са позволени в предишните версии, новият код би предизвикал синтактични грешки, ако се ползва с по-стара версия на PHP. Можете да видите https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes за повече информация и примери.

Без нов ред след маркер

Преди PHP 7.3 беше необходимо да добавите нов ред точно след затварящия маркер. Това изискване е премахнато в новата версия. Ето два примера, за да Ви стане по-ясно за какво става дума:

Преди PHP 7.3

<?php
stringManipulator(<<<END
   a
  b
 c
END
);
 
$values = [<<<END
a
b
c
END
, 'd e f'];

След PHP 7.3

<?php
stringManipulator(<<<END
   a
  b
 c
END);
 
$values = [<<<END
a
b
c
END, 'd e f'];

Ефект върху обратната съвместимост

Малък, тъй като изискванията към кода са по-гъвкави.

Предишният код ще връща грешка единствено при следните обстоятелства:

  • Маркерът е разположен в началото на реда
  • Маркерът се разглежда като самостоятелен символ

Запетая в края на функция

вече е позволена. Това е подобрение основно за разработчици, които са свикнали да добавят запетая след всяко дефиниране на променлива. Можете да видите промяната в следния код:

Преди PHP 7.3

<?php
foo(
    $foo,
    $bar
);

След PHP 7.3

<?php
foo(
$foo,
$bar,
);

Ефект върху обратната съвместимост

Няма. Вече съществуващ код няма да бъде засегнат по никакъв начин от тази промяна.

Главни/малки букви в константите вече имат значение

Преди PHP 7.3 беше възможно да се дефинират константи без значение от главните или малки букви чрез употребата на “TRUE” като трети параметър в дефинирането на функция define():

define('Foo', 'Bar', true);

Този код би върнал следната грешка в PHP 7.3:

Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "Foo" (Константи без дефинирани главни/малки букви вече не са в употреба. Тази константа трябва да се изписва “Foo”)

Ефект върху обратната съвместимост

Умерен. Съществуващ код ще трябва да бъде прегледан и константи без дефинирана главна/малка буква ще трябва да бъдат заместени. Тъй като използването на подобни константи досега беше по избор, най-вероятно няма да е голям броят на проектите, които ще бъдат засегнати.

Ъпгрейд на регулярните изрази, съвместими с Пърл (PCRE)

Модулът за регулярните изрази, съвместими с Пърл (Perl-Compatible Regular Expressions, PCRE) е обновен до PCRE2. Твърди се, че PCRE2 е обратно съвместим с предишната версия, но все пак има някои малки разлики. PCRE2 има по-стриктна валидация на шаблони, което значи, че някои съществуващи шаблони може да не се компилират повече.

Ефект върху обратната съвместимост

Умерен. Поради стриктната валидация, съществуващ код може да спре да работи. Процесът по отстраняване на грешки може да не сработи, тъй като няма да получите грешка - регулярните изрази няма да съвпадат с никой шаблон. Ще намерите повече информация относно миграцията към PCRE2 на https://wiki.php.net/rfc/pcre2-migration.

Други промени

Пълният списък с промени се намира на официалния сайт на PHP. Ето и линк към по-важните промени: Backwards Incompatible Changes PHP 7.3.

Автор

ICDSoft е българска компания с дългогодишен опит в хостинг индустрията. Държим на качество и честност в предоставяните услуги, а екипът ни от професионалисти е винаги готов да Ви помогне при нужда.