fbpx Stiskněte "Enter" pro přeskočení obsahu

Nově podporujeme verzi PHP 8.2

0

Verzi PHP 8 a 8.1 jsme Vám představili v loňském roce. V dnešním článku pro Vás máme informace o dalším rozšíření, a to o verzi PHP 8.2 kterou si můžete aktivovat v administraci hostingových služeb.

Přiblížíme si novinky v PHP 8.2, zastaralé funkce v PHP 8.2 a v neposlední řadě Vám také poradíme, jak provést změnu PHP u našich webhostingových služeb.

Novinky v PHP 8.2

Verze 8.2 byla vydána 8. prosince 2022. Projdeme si nové důležité funkce jako jsou třídy jen pro čtení, rozšíření pro náhodná čísla, samostatné nové typy null, false a true a také zastaralé funkce a syntaxe. Opravena byla velká řada chyb, kompletní seznam naleznete v přehledu změn.

Type System Improvements 

Tato verze řeší několik nedostatků a omezení typového systému PHP.  Umožňuje aplikacím PHP využívání lepší typové bezpečnosti. To zahrnuje přidání podpory pro truetyp a povolení použití typů nullfalse jako samostatných typů.

function alwaysReturnsFalse(): false {}
function alwaysReturnsNull(): null {}
function alwaysReturnsTrue(): true {}

Podpora pro truefalsejako samostatné typy umožňuje nahradit booldeklarace typu, pokud je booleovská hodnota vždy stejná.

Nové randomrozšíření

V průběhu historie PHP podporoval různé generátory náhodných čísel (RNG). PHP 8.2 jde o krok dále tím, že refaktoruje všechny funkce související s RNG na nové rozšíření s názvem random.

Rozšířenírandom poskytuje stejnou funkcionalitu bez narušení jakýchkoli API , takže stávající funkce rand, mt_rand, random_bytes a random_int nadále fungují beze změn. Poskytuje také nové OOP API pro generování náhodných čísel se zásuvnou architekturou, takže je nyní snadné klamat RNG a poskytovat nové RNG, díky čemuž jsou aplikace PHP bezpečné a snadno testovatelné.

Třídy pouze pro čtení

PHP 8.1 přidalo podporu pro readonlyvlastnosti. PHP 8.2 posouvá readonlyvlastnosti o krok dále, a to pomocí readonlytříd. Když je třída deklarována jako readonly, všechny její vlastnosti jsou automaticky deklarovány readonly.

PHP 8.1

class User {
  public readonly int $uid;
  public readonly string $username;
}

PHP 8.2

readonly class User {
  public int $uid;
  public string $username;
}

Konstanty ve vlastnostech

trait FooBar {
  const FOO = 'foo';
  private consts BAR = 'bar';
  final const BAZ = 'baz';
  final protected const QUX = 'qux';
}

class Test {
  use FooBar;
}

echo Test::BAZ; // 'bar'

Nyní je možné deklarovat konstanty ve vlastnostech . K vlastnostem nelze přistupovat přímo, ale tyto konstanty se stanou konstantami třídy, když třída vlastnost používá. To v PHP 8.1 a starších nebylo povoleno. Ke konstantám vlastností nelze přistupovat přímo (tj FooBar::FOO. nejsou povoleny). Konstanty vlastností také nesmí kolidovat s jinými vlastnostmi nebo bezprostřední třídou, která je používá. Podpora úpravy hodnot citlivých parametrů

PHP 8.2 přidává nový vestavěný parametr Attribute s názvem #[\SensitiveParameter], který zajišťuje, že PHP upravuje skutečnou hodnotu v trasování zásobníku a chybových zprávách.

Funkce, které přijímají hesla, soukromé klíče nebo jinak citlivé informace, mohou deklarovat parametry pomocí #[\SensitiveParameter]atributu. Pokud volání funkce v něm způsobí chybu PHP nebo výjimku, skutečná hodnota předaná tomuto parametru bude nahrazena objektem \SensitiveparameterValue.

Nové funkce a třídy

PHP 8.2 přináší kromě hlavních nových funkcí také sadu nových funkcí a tříd. Více o změnách v PHP 8.2 se můžete dočíst například v článku What’s new in PHP 8.2

Zastaralé funkce a syntaxe v PHP 8.2

Když je syntaxe, funkce nebo vlastnost zastaralá, PHP vydá oznámení o ukončení, které by nemělo narušit aplikace PHP, ale bude zaznamenáno do protokolu chyb. PHP 8.2 přináší slušný podíl zavržení.

Jedním z nejpozoruhodnějších zavržení v PHP 8.2 je, že zavrhuje vlastnosti třídy, které jsou dynamicky deklarovány. Existuje možnost neúčasti, ale doporučený přístup je deklarovat vlastnosti třídy v deklaraci třídy, nejlépe také s deklarací typu. Je pravděpodobné, že touto změnou bude ovlivněno mnoho starších aplikací PHP, protože starší aplikace mají tendenci nedeklarovat vlastnosti třídy, když jsou rozšířeny nebo se vyvíjely v průběhu let se změnami.

class User {
  public string $name;
}

$user = new User();
$user->name = 'Foo';

PHP 8.2 konečně také zavrhuje funkce utf8_encodeautf8_decode , které byly bohužel pojmenovány, aniž by bylo poznamenáno, že pouze kódují/dekódují z Latin 1(ISO-8859-1). Většina aplikací PHP, které tyto funkce používají, si tento nedostatek obvykle neuvědomuje. Mezi doporučené náhrady patří lepší funkce poskytované rozšířeními mbstringiconvintl.

Změna verze PHP

Změnit si verzi PHP můžete snadno přes naši administraci. Přehledný návod jak na to, máme v naší znalostní bázi: Změna verze PHP. Změna verze PHP se u Vašeho webu projeví do 15 minut.

Důrazně doporučujeme všem zákazníkům, aby dbali na bezpečnost svých PHP aplikací a přecházeli na novější verze PHP z důvodu bezpečnosti, jakmile to jejich aplikace umožňuje.

Pokud si s provedením změny nejste jisti nebo potřebujete poradit, prosím, kontaktujte naši zákaznickou podporu, která vám ráda zodpoví veškeré dotazy.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *