แแ แแ แฌแแแก แแแแแแแแ แแแแก แจแแแแแ, แฌแแ แแแแแแแแแ แแงแ PHP 8.1 แแ แแแ แแแแ แแแแก แแแแก แแแแแจแแแแ. แแฎแแแ แคแแแแแแ แแแแชแแแก แแฎแแแ แคแฃแแฅแชแแแแแก แกแแ แแแก, แแกแแแ แ แแแแแแแแ แชแแแแแแแแก, แ แแแแแแช แแ แฆแแแแก แแแแกแแแแแแแแก.
แซแแ แแแแแ แแแฃแแฏแแแแกแแแแแ PHP 8.1-แจแ:
- แแแแแขแแแฃแแแ แแฆแ แแชแฎแแแก แแฎแแ แแแญแแ แ, แแแแแแแแแ, แแฎแแ แจแแแแซแแแแ แแแแแแงแแแแ แจแแแแแแ แแแแกแขแ แฃแฅแชแแแแ: enum Status { case Pending; แกแแฅแแ แแฅแขแแฃแ แ; แกแแฅแแ แแแแ แฅแแแแแฃแแแ; } class Post { public แคแฃแแฅแชแแ __construct( private Status $status = Status::Pending; ) {} public function setStatus(Status $status): void { // โฆ } } $post->setStatus(Status::Active);
- แแแแแขแแแฃแแแ แแกแฃแแฃแฅแ แซแแคแแแแก แแฎแแ แแแญแแ แ, แกแแฎแแแฌแแแแแแ Fibers, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแ แแแ แจแแกแ แฃแแแแแก แซแแคแแแ แแแแแ แแแแแแ. Fiber แแฎแแ แแแญแแ แ แแแแแแแแ Amphp แแ ReactPHP แฉแแ แฉแแแแจแ. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('แจแแฉแแ แแแแก แจแแแแแ'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->resume('แแแแแฎแแแแแก แจแแแแแ');
- แแแฃแแฏแแแแกแแ แแแแแฅแขแแก แแแแแก แฅแแจแแก (opcache) แแแแแ แแแ, แ แแช แจแแกแแซแแแแแแก แฎแแแก แแแแกแแก แแแแแแแแ แแแแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แฅแแจแแ แแแแก. แแแขแแแแแแชแแแ แจแแกแแซแแแแแแ แแแฎแแแ แแแแแแ แแ แแแแแแแชแแแก แแฃแจแแแแแก 5-8%-แแ แแแแ แแ. แกแฎแแ แแแขแแแแแแชแแ แแแแชแแแก JIT แแแแ แแชแแแแแก แแแขแแแแแแชแแแก, JIT แแฎแแ แแแญแแ แแก แแแแฎแแ แชแแแแแแแก ARM64 แแ แฅแแขแแฅแขแฃแ แแกแแแแก (AArch64), แกแแฎแแแแแแก แแแ แฉแแแแแแแแก แแแฉแฅแแ แแแ, timelib แแ ext/date แแแแแแแแแแแแแก แแแขแแแแแแชแแ, แแแแ แแแแ แกแแ แแแแแแแชแแแก แแ แแแกแแ แแแแแแแชแแแก แจแแกแ แฃแแแแ, get_declared_classes(), explode() , strtr() แคแฃแแฅแชแแ, strnatcmp(), dechex(). แแแแแแแ, Symfony Demo-แกแแแแก แแ แแก 23.0%-แแแแ แแ แแ, แฎแแแ WordPress-แแกแแแแก 3.5%.
- แแแกแแแแแแก แจแแแแแ แแแแแแแแแแก แแแแ แแขแแ แ "...$var", แ แแแแแแช แแซแแแแ แแ แกแแแฃแแ แแแกแแแแแแก แฉแแแแชแแแแแแก แกแแจแฃแแแแแแก แแฎแแแ แแแกแแแแก แแแแกแแแฆแแ แแกแแก, แแแคแแ แแแแแ แกแแแแแแแแ แแแแแแจแแแแก แแฎแแ แแแกแแญแแ แแ (แแแ แ แแฎแแแแ แชแแคแ แฃแแ แแแแแขแแคแแแแขแแ แแแ แแงแ แแฎแแ แแแญแแ แแแ). แแแแแแแแแ, แแฎแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแแ: $array1 = [โaโ => 1]; $array2 = ["b" => 2]; $แแแกแแแ = [โaโ => 0, โฆ$array1, โฆ$array2]; var_dump ($แแแกแแแ); // ["a" => 1, "b" => 2]
- แแแแแแแ แแฃแแแ แกแแแแแแซแ แกแแขแงแแแก "แแฎแแแ" แแแแแงแแแแแ แแแแชแแแแแแแขแแ แแแจแ, แแแแแแแแแ, แคแฃแแฅแชแแแแแก แแแแแแ แขแแแแแจแ, แ แแแแ แช แแแแฃแแแกแฎแแแ แแแ แแแแขแ แจแ แแ แแ แแฃแแแแขแแก แแขแ แแแฃแขแแแจแ. class MyController { public แคแฃแแฅแชแแ __construct( private Logger $logger = new NullLogger(), ) {} }
- แจแแกแแซแแแแแแแ แแแแกแแก แแแแกแแแแแแก แแแแแจแแแ แแฎแแแแ แฌแแแแแฎแแแแ แฌแแแแแแกแแแแก (แแกแแ แแแแกแแแแแจแ แแแคแแ แแแชแแ แแฎแแแแ แแ แแฎแแ แจแแแซแแแแ แฉแแแฌแแ แแก, แ แแก แจแแแแแแแช แแแ แแ แแฅแแแแ แฎแแแแแกแแฌแแแแแ แจแแกแแชแแแแแแ). class PostData { แกแแฏแแ แ แคแฃแแฅแชแแ __construct( แกแแฏแแ แ แแฎแแแแ แฌแแแแแฎแแแแ แกแขแ แแฅแแแ $title, แกแแฏแแ แ แแฎแแแแ แฌแแแแแฎแแแแ DateTimeImmutable $date, ) {} } $post = new Post('Title', /* โฆ */); $post->title = 'แกแฎแแ'; > แจแแชแแแแ: แจแแฃแซแแแแแแแ แแฎแแแแ แฌแแแแแฎแแแก แแแแกแแแแก แจแแชแแแ Post::$title
- แแฎแแแ แกแแแขแแฅแกแ แแแแฎแแ แชแแแแแ แแแแแกแแซแแฎแแแแแ แแแแแฅแขแแแแกแแแแก - แแแฎแฃแ แแ แแฎแแ แจแแแซแแแแ แฉแแแแงแแแแแแแก แคแฃแแฅแชแแแก แแแแแซแแฎแแแแ แแ แแ แแฃแแแแขแแก แกแแฎแแ แแแแจแแแแแแแแก "..." แแแแแชแแแแ (แแแฃ myFunc(...) Closure::fromCallable('myFunc-แแก แแแชแแแแ. ')): แคแฃแแฅแชแแ foo (int $a, int $b) { /* โฆ */ } $foo = foo(โฆ); $foo(a: 1, b: 2);
- แแแแแขแแแฃแแแ แแแแแแก แขแแแแแแก แกแ แฃแแ แแฎแแ แแแญแแ แ, แ แแช แกแแจแฃแแแแแแก แแแซแแแแ แจแแฅแแแแ แแฎแแแ แขแแแแแ แแ แกแแแฃแแแก แแแแแแแแชแแแ. แแแแจแแ แแก แขแแแแแแกแแแแ แแแแกแฎแแแแแแแ, แ แแแแแแแช แแแแกแแแฆแแ แแแแ แแ แ แแ แแแขแ แขแแแแก แแแแแฅแชแแแแก, แแแแแแก แขแแแแแ แแแแแฎแแแก แแ แ แ แแแแแแแ แฉแแแแแแแแแ แขแแแแก, แแ แแแแ แงแแแแ แแแแแแแแฃแแ แขแแแแก แแ แกแแแแแแก แแแแแแแฅแขแจแ, แ แแแแแแช แฃแแแ แจแแแแกแแก. แคแฃแแฅแชแแ generateSlug(HasTitle&HasId $post) { return strtolower($post->getTitle()) . $post->getId(); }
- แแ แกแแแแแก แแฎแแแ แขแแแ "แแ แแกแแ แแก", แ แแแแแแช แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แกแขแแขแแแฃแ แ แแแแแแแแขแแ แแแแก แแแคแแ แแแ แแแแกแแแแก, แ แแ แคแฃแแฅแชแแ แจแแฌแงแแแขแก แแ แแแ แแแแก แจแแกแ แฃแแแแแก, แแแแแแแแแ, แแแแแแแแแแกแแก แแแแแแแแแแ แแ แแแกแแแแก แคแฃแแฅแชแแแก แจแแกแ แฃแแแแแ. แคแฃแแฅแชแแ dd(แจแแ แแฃแแ $input): แแ แแกแแแแก { แแแแแกแแแ; }
- แจแแแแแแแแแแแฃแแแ แแฎแแแ แคแฃแแฅแชแแ array_is_list, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแแกแแแฆแแ แแ, แ แแ แแแกแแแแก แแแแแแจแแแ แแแแแแแแแฃแแแ แ แแชแฎแแแแ แแแแจแแแแแแแแแแก แแแแ แแแก แแแฎแแแแแ, แแแฌแงแแแฃแแ 0-แแแ: $list = [โaโ, โbโ, โcโ]; array_is_list ($list); // true $notAList = [1 => "a", 2 => "b", 3 => "c"]; array_is_list ($notAList); // false $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; 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; // true 016 === 0O16; // แแแ แแแแแ
- แจแแแแแแแแแแแฃแแแ $GLOBALS-แแก แแแแแงแแแแแแก แจแแ แฉแแแแแ แจแแแฆแฃแแแ, แ แแช แแแแแแฌแแแแก แฉแแแแ แฉแแแแแ แแแแกแแแแแแแแก แแแ แฆแแแแแก, แแแแ แแ แจแแกแแซแแแแแแก แแแฎแแแก แแแแจแแแแแแแแแ แแแแฉแฅแแ แแก แแแแ แแชแแแแ แแแกแแแแแแ. แแแแแแแแแ, แแแแแฎแแแแแ $GLOBALS-แแ แฉแแฌแแ แแก แแแแแ แแแแกแ แแ $GLOBALS-แแก แแแฉแแแแแแแแ แแแแแชแแแแก แจแแกแแซแแแแแแแ. 2000 แแแแแขแแก แแแแแแแแ แแฉแแแแ, แ แแ แแแแแแ แแฎแแแแ 23 แแฅแแแแ แแก แชแแแแแแแ. แแแแแแแแแ, แแฃ แฌแแแแแแแแแ แแแแขแแแชแแแแ, 8.1 แแฆแแ แแฅแแแแ แแกแแแ แแแแแแแแฅแแแแแแแก แแฎแแ แแแญแแ แ, แ แแแแ แแชแแ: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset ($GLOBALS); by_ref ($GLOBALS);
- แจแแแ แแแแแแแแแ แแฎแแ แฃแแแ แแแแแ แฃแแแ แกแฌแแ แ แขแแแ. PHP 8.1-แจแ แแกแแแ แขแแแแก แแแแ แฃแแแแ, แ แแแแแแช แแ แแแแฎแแแแ แคแฃแแฅแชแแแก แแแแแแ แแชแแแก, แฌแแ แแแฅแแแแก แแแคแ แแฎแแแแแแก, แแแแ แแ PHP 9.0-แจแ แแแคแ แแฎแแแแแ แจแแแชแแแแแ แจแแชแแแแแ.
- แแฃแจแแแแ แแแแ แซแแแแ แคแฃแแฅแชแแแแแก แ แแกแฃแ แกแแแแก แแแแแงแแแแแแ แแแแแฅแขแแแแก แแแแแแฃแแแ แแแแแ แแแแแขแแแแแ. finfo_* แแ imap_* แคแฃแแฅแชแแแแ แแแแแขแแแแแแ แแแแแฅแขแแแแ.
- แแฃแแแแแแ แแแแจแแแแแแแแแแก, แ แแแแ แช แแ แแฃแแแแขแแแแก แแแแแชแแแ แจแแแ แคแฃแแฅแชแแแแแ, แ แแแแแแแช แแแแแจแแฃแแแ แแ แ nullable, แแแซแแแแแแฃแแแ. PHP 8.1-แจแ แแกแแแ แแแแกแขแ แฃแฅแขแแแแก แแแแแงแแแแแ, แ แแแแ แแชแแ str_contains("string", null) แแแแแแฌแแแแก แแแคแ แแฎแแแแแแก, แฎแแแ PHP 9-แจแ แจแแชแแแแแก.
- แแแแแแขแ แแฎแแ แแแญแแ แ MurmurHash3 แแ xxHash แฐแแจแแ แแแแก แแแแแ แแแแแแแกแแแแก.
แฌแงแแ แ: opennet.ru