ΠΠΎ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ°Π·Π²ΠΎΡ, Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΡΡΡΠ°Π²Π΅Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ PHP 8.1. ΠΠΎΠ²Π°ΡΠ° Π³ΡΠ°Π½ΠΊΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° Π½ΠΈΠ·Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΈ ΡΠ° Π½Π°ΡΡΡΡΠ²Π°Π°Ρ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ°.
ΠΠ»ΡΡΠ½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ° Π²ΠΎ PHP 8.1:
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π½Π°Π±ΡΠΎΡΡΠ²Π°ΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ: enum Π‘ΡΠ°ΡΡΡ { ΡΠ»ΡΡΠ°Ρ ΠΠΎ ΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅; ΡΠ»ΡΡΠ°Ρ ΠΠΊΡΠΈΠ²Π΅Π½; ΡΠ»ΡΡΠ°Ρ ΠΡΡ ΠΈΠ²ΠΈΡΠ°Π½; } class Post { ΡΠ°Π²Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° __construct( private Status $status = Status::Pending; ) {} public ΡΡΠ½ΠΊΡΠΈΡΠ° setStatus(Status $status): void { // β¦ } } $post->setStatus(Status::Active);
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π»Π΅ΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ Fibers, ΠΊΠΎΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π½ΠΈΡΠΊΠΈΡΠ΅ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ. ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° ΠΎΠΏΡΠΈΡΠΊΠΈ Π²Π»Π°ΠΊΠ½Π° ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ Π²ΠΎ ΡΠ°ΠΌΠΊΠΈ Amphp ΠΈ ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->resume('ΠΏΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π°ΡΠ΅');
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ΅ΡΠΎΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ (opcache) Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠ»Π°ΡΠΈΡΠ΅. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΠ°Ρ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° 5-8%. ΠΡΡΠ³ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° JIT, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° JIT ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° ARM64 (AArch64), Π·Π°Π±ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΠ°ΡΠ° Π½Π° ΠΈΠΌΠΈΡΠ°ΡΠ°, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠ° Π»ΠΈΡΡΠ° ΠΈ ext/date, Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π½Π° ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° get_declared_classes(), explode() , ΡΡΠ½ΠΊΡΠΈΡΠ° strtr(), strnatcmp(), dechex(). ΠΠ΅Π½Π΅ΡΠ°Π»Π½ΠΎ, ΠΈΠΌΠ° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π·Π° 23.0% Π·Π° Symfony Demo ΠΈ 3.5% Π·Π° WordPress.
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΡ Π·Π° ΠΎΡΠΏΠ°ΠΊΡΠ²Π°ΡΠ΅ Π²ΠΎ Π½ΠΈΠ·ΠΈΡΠ΅ β...$varβ, ΠΊΠΎΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΡΡΠΎΡΠ½ΠΈΡΠ΅ Π½ΠΈΠ·ΠΈ ΠΏΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° Π½ΠΎΠ²Π° Π½ΠΈΠ·Π°, Π΅ ΠΏΡΠΎΡΠΈΡΠ΅Π½ Π·Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΠΊΠ»ΡΡΠ΅Π²ΠΈ Π·Π° Π½ΠΈΠ·Π° (ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π±Π΅Π° ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ΠΈ ΡΠ°ΠΌΠΎ Π΄ΠΈΠ³ΠΈΡΠ°Π»Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ). ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ: $array1 = [βaβ => 1]; $array2 = ["b" => 2]; $array = [βaβ => 0, β¦$array1, β¦$array2]; var_dump ($ Π½ΠΈΠ·Π°); // ["a" => 1, "b" => 2]
- ΠΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠ»ΡΡΠ½ΠΈΠΎΡ Π·Π±ΠΎΡ βΠ½ΠΎΠ²β Π²ΠΎ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅, ΠΊΠ°ΠΊΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΈΠ»ΠΈ Π²ΠΎ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅. ΠΊΠ»Π°ΡΠ° MyController { ΡΠ°Π²Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° __construct (ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ Logger $logger = Π½ΠΎΠ² NullLogger(), ) {} }
- ΠΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π»Π΅ΠΆΠ°Ρ ΡΠ²ΠΎΡΡΡΠ²Π°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΠ°ΡΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ (ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π²ΠΎ ΡΠ°ΠΊΠ²ΠΈ ΡΠ²ΠΎΡΡΡΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π°Ρ, ΠΏΠΎ ΡΡΠΎ Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π°). class PostData {ΡΠ°Π²Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° __construct( ΡΠ°Π²Π½Π° Π½ΠΈΠ·Π° ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ $title, ΡΠ°Π²Π½Π° ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ DateTimeImmutable $date, ) {} } $post = new Post('ΠΠ°ΡΠ»ΠΎΠ²', /* β¦ */); $post->title = 'ΠΡΡΠ³ΠΎ'; > ΠΡΠ΅ΡΠΊΠ°: ΠΠ΅ ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° ΡΠ° ΠΌΠ΅Π½ΡΠ²Π°ΠΌ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΡΡΠ° ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΠ±ΡΠ°Π²Π°::$title
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π΅ Π½ΠΎΠ²Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠ° Π·Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ°Π°Ρ - Π·Π°ΡΠ²ΠΎΡΠ°ΡΠ΅ ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° ΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°ΡΠ΅ Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° β...β ΠΊΠ°ΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ (Ρ.Π΅. myFunc(...) Π½Π°ΠΌΠ΅ΡΡΠΎ Closure::fromCallable('myFunc ')): ΡΡΠ½ΠΊΡΠΈΡΠ° foo (int $a, int $b) { /* β¦ */ } $foo = foo(β¦); $foo(a: 1, b: 2);
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΡΠ΅Π»ΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΏΡΠ΅ΡΠ΅ΡΠΈ, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠΈΠ½ΡΠΈΡΠΈ, ΠΊΠΎΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π°Ρ Π·Π±ΠΈΡΠΊΠΈ ΠΎΠ΄ Π΄Π²Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΈΠΏΠ°, ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΠ΅ΡΠΈ Π±Π°ΡΠ°Π°Ρ ΠΏΡΠΈΡΡΡΡΠ²ΠΎ Π½Π΅ Π½Π° Π½ΠΈΡΡ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ, ΡΡΠΊΡ Π½Π° ΡΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΡΠΎ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΏΠΎΠ»Π½ΠΈ. ΡΡΠ½ΠΊΡΠΈΡΠ° generateSlug(HasTitle&HasId $post) { return sttolower($post->getTitle()) . $post->getId(); }
- ΠΠΌΠ° Π½ΠΎΠ² ΡΠΈΠΏ βΠ½ΠΈΠΊΠΎΠ³Π°Ρβ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ Π΄Π΅ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΡΠ΅ Π³ΠΎ ΠΏΡΠ΅ΠΊΠΈΠ½Π΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎ ΠΈΡΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° Π·Π° ΠΈΠ·Π»Π΅Π·. ΡΡΠ½ΠΊΡΠΈΡΠ° dd(ΠΌΠ΅ΡΠ°Π½ $Π²Π»Π΅Π·): Π½ΠΈΠΊΠΎΠ³Π°Ρ { ΠΈΠ·Π»Π΅Π·; }
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ° array_is_list, ΠΊΠΎΡΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΠΏΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π½ΠΈΠ·Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΠΎ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ Π½Π° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π½ΡΠΌΠ΅ΡΠΈΡΠΊΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ, ΠΏΠΎΡΠ½ΡΠ²Π°ΡΡΠΈ ΠΎΠ΄ 0: $list = [βaβ, βbβ, βcβ]; Π½ΠΈΠ·Π°_ΠΈΡ_Π»ΠΈΡΡΠ° ($Π»ΠΈΡΡΠ°); // ΡΠΎΡΠ½ΠΎ $notAList = [1 => βΠ°β, 2 => βΠ±β, 3 => βΠ²β]; array_is_list ($notAList); // Π½Π΅ΡΠΎΡΠ½ΠΎ $alsoNotAList = ["a" => "Π°", "Π±" => "Π±", "Π²" => "Π²"]; array_is_list ($alsoNotAList); // Π½Π΅ΡΠΎΡΠ½ΠΎ
- Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ βΠΊΠΎΠ½Π΅ΡΠ½ΠΈΠΎΡβ ΠΊΠ»ΡΡΠ΅Π½ Π·Π±ΠΎΡ Π·Π° Π΄Π° ΡΠΏΡΠ΅ΡΠΈΡΠ΅ ΠΎΡΡΡΠ»Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΌΠ°ΡΠΈΡΠ½Π°ΡΠ° ΠΊΠ»Π°ΡΠ°. class Foo { final public const X = "foo"; } class Bar extends Foo { public const X = "bar"; > Π€Π°ΡΠ°Π»Π½Π° Π³ΡΠ΅ΡΠΊΠ°: ΠΠ΅Π½ΡΠ°::X Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° Π½Π°Π΄ΠΌΠΈΠ½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Foo::X }
- Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ fsync ΠΈ fdatasync ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ½ΡΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΡΡΠ²Π°Π°Ρ ΠΎΠ΄ ΠΊΠ΅ΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ. $file = fopen ("sample.txt", "w"); fwrite($file, βΠΠ΅ΠΊΠΎΠΈ ΡΠΎΠ΄ΡΠΆΠΈΠ½ΠΈβ); if (fsync($file)) { echo "ΠΠ°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π΄ΡΠΆΠ°Π½Π° Π½Π° Π΄ΠΈΡΠΊΠΎΡ."; } fclose ($ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°);
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΡΠ΅ΡΠΈΠΊΡΠΈΡΠ΅ β0oβ ΠΈ β0Oβ Π·Π° ΠΎΠΊΡΠ°Π»Π½ΠΈ Π±ΡΠΎΠ΅Π²ΠΈ, ΠΏΠΎΠΊΡΠ°Ρ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈΠΎΡ ΠΏΡΠ΅ΡΠΈΠΊΡ β0β. 016 === 0o16; // ΡΠΎΡΠ½ΠΎ 016 === 0O16; // ΡΠΎΡΠ½ΠΎ
- Π‘Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° $GLOBALS, ΡΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°ΡΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ° Π½Π°Π½Π°Π·Π°Π΄, Π½ΠΎ ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π±ΡΠ·Π°Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠΎ Π½ΠΈΠ·ΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° $GLOBALS ΠΈ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ Π½Π° $GLOBALS ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ. ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠ° Π½Π° 2000 ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° ΡΠ°ΠΌΠΎ 23 ΠΎΠ΄ Π½ΠΈΠ² ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈ ΠΎΠ΄ ΠΎΠ²Π°Π° ΠΏΡΠΎΠΌΠ΅Π½Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠ³ΠΎΡ Π±ΠΈΠ΄Π΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½, 8.1 ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ΠΌΠ° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΠΈΠ·ΡΠ°Π·ΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅: $GLOBALS = []; $GLOBALS += []; $ ΠΠΠΠΠΠΠ =& $ x; $x =& $ΠΠΠΠΠΠΠ; unset($GLOBALS); by_ref ($ ΠΠΠΠΠΠΠ);
- ΠΠ½Π°ΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΡΠ΅Π³Π° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ Π²ΡΠ°ΡΠ°Ρ ΡΠΎΡΠ½ΠΈΠΎΡ ΡΠΈΠΏ. ΠΠΎ PHP 8.1, Π²ΡΠ°ΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΡΠΈΠΏ ΡΡΠΎ Π½Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅, Π½ΠΎ Π²ΠΎ PHP 9.0 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈ ΡΠΎ Π³ΡΠ΅ΡΠΊΠ°.
- Π Π°Π±ΠΎΡΠ°ΡΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π½Π° ΠΏΡΠ΅Π½ΠΎΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π΄ΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ. Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ finfo_* ΠΈ imap_* ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»Π΅Π½ΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ.
- ΠΡΠ΅Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π½Π° Π½ΡΠ»Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠ°ΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π½Π° Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ Π½Π΅Π½ΡΠ»Π°Π±ΠΈΠ»Π½ΠΈ Π΅ Π·Π°ΡΡΠ°ΡΠ΅Π½ΠΎ. ΠΠΎ PHP 8.1, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ str_contains ("string", null) ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅, Π° Π²ΠΎ PHP 9 Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ°.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ Π·Π° Ρ Π΅ΡΠΈΡΠ°ΡΠ΅ MurmurHash3 ΠΈ xxHash.
ΠΠ·Π²ΠΎΡ: opennet.ru