āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ 8.1 āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻĒā§āĻ°āĻ•āĻžāĻļ

āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§‡āĻ° āĻāĻ• āĻŦāĻ›āĻ° āĻĒāĻ°, āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ 8.1 āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¨āĻ¤ā§āĻ¨ āĻļāĻžāĻ–āĻžāĻ¯āĻŧ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ¨āĻ¤ā§āĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯ āĻ­āĻ™ā§āĻ—āĻ•āĻžāĻ°ā§€ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

PHP 8.1-āĻ¤ā§‡ āĻŽā§‚āĻ˛ āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋ:

  • āĻ—āĻŖāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ–āĻ¨ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ—āĻ āĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨: enum Status { case Pending; āĻ•ā§‡āĻ¸ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ; āĻŽāĻžāĻŽāĻ˛āĻž āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­ āĻ•āĻ°āĻž; } āĻ•ā§āĻ˛āĻžāĻ¸ āĻĒā§‹āĻ¸ā§āĻŸ { āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ __ āĻ•āĻ¨āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ ( āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸ $ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸ = āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸:: āĻĒā§‡āĻ¨ā§āĻĄāĻŋāĻ‚; ) {} āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸ā§‡āĻŸāĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸(āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸ $āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻžāĻ¸): void { // â€Ļ } } $post->setStatus(Status::Active);
  • āĻĢāĻžāĻ‡āĻŦāĻžāĻ° āĻ¨āĻžāĻŽāĻ• āĻ˛āĻžāĻ‡āĻŸāĻ“āĻ¯āĻŧā§‡āĻŸ āĻĨā§āĻ°ā§‡āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨ āĻ¸ā§āĻ¤āĻ°ā§‡ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻĨā§āĻ°ā§‡āĻĄ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ Amphp āĻāĻŦāĻ‚ ReactPHP āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĢāĻžāĻ‡āĻŦāĻžāĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ $fiber = āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻ‡āĻŦāĻžāĻ°(āĻĢāĻžāĻ‚āĻļāĻ¨ (): void { $valueAfterResuming = Fiber::suspend('sspending'); // ... }); $valueAfterSuspending = $fiber->start(); $fiber->āĻ°āĻŋāĻœā§āĻŽā§‡ ('āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°');
  • āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ•ā§‹āĻĄ āĻ•ā§āĻ¯āĻžāĻļā§‡ (opcache) āĻāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ‡āĻ¨āĻšā§‡āĻ°āĻŋāĻŸā§‡āĻ¨ā§āĻ¸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦāĨ¤ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ•āĻŋāĻ›ā§ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž 5-8% āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ JIT āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨, ARM64 āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ JIT āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ (AArch64), āĻ¨āĻžāĻŽā§‡āĻ° āĻ°ā§‡āĻœā§‹āĻ˛āĻŋāĻ‰āĻļāĻ¨ā§‡āĻ° āĻ¤ā§āĻŦāĻ°āĻŖ, āĻŸāĻžāĻ‡āĻŽāĻ˛āĻžāĻ‡āĻŦ āĻāĻŦāĻ‚ āĻāĻ•ā§āĻ¸āĻŸ/āĻĄā§‡āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨, āĻ•ā§āĻ°āĻŽāĻŦāĻ°ā§āĻ§āĻŋāĻ¤ āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž, get_declared_classes() āĻāĻ° āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨(), explode , strtr() āĻĢāĻžāĻ‚āĻļāĻ¨, strnatcmp(), dechex()āĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, Symfony Demo-āĻāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž 23.0% āĻāĻŦāĻ‚ WordPress-āĻāĻ° āĻœāĻ¨ā§āĻ¯ 3.5% āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻĒāĻžāĻ¯āĻŧāĨ¤
  • āĻ…ā§āĻ¯āĻžāĻ°ā§‡ "...$var" āĻāĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ†āĻ¨āĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻž āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ, āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ•ā§€ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (āĻ†āĻ—ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄāĻŋāĻœāĻŋāĻŸāĻžāĻ˛ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻ›āĻŋāĻ˛)āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ–āĻ¨ āĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨: $array1 = [“a” => 1]; $array2 = ["b" => 2]; $array = [“a” => 0, â€Ļ$array1, â€Ļ$array2]; var_dump($ array); // ["a" => 1, "b" => 2]
  • āĻ‡āĻ¨āĻŋāĻļāĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœāĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ "āĻ¨āĻ¤ā§āĻ¨" āĻ•ā§€āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻ¯ā§‡āĻŽāĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻ‚āĻœā§āĻžāĻž āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻž āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸā§‡āĨ¤ āĻ•ā§āĻ˛āĻžāĻ¸ MyController { āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨ __construct( āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ˛āĻ—āĻžāĻ° $logger = āĻ¨āĻ¤ā§āĻ¨ NullLogger(), ) {} }
  • āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ°-āĻĒāĻ āĻ¨ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻļā§āĻ°ā§‡āĻŖā§€ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ (āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¤āĻĨā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŦāĻžāĻ° āĻ˛ā§‡āĻ–āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻŦā§‡ āĻ¨āĻž)āĨ¤ āĻ•ā§āĻ˛āĻžāĻ¸ āĻĒā§‹āĻ¸ā§āĻŸāĻĄā§‡āĻŸāĻž { āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ __ āĻ•āĻ¨āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ ( āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻ°āĻŋāĻĄāĻ…āĻ¨āĻ˛āĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ $āĻŸāĻžāĻ‡āĻŸā§‡āĻ˛, āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻ°āĻŋāĻĄāĻ…āĻ¨āĻ˛āĻŋ DateTimeImmutable $date, ) {} } $post = āĻ¨āĻ¤ā§āĻ¨ āĻĒā§‹āĻ¸ā§āĻŸ('āĻŸāĻžāĻ‡āĻŸā§‡āĻ˛', /* â€Ļ */); $post->āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ = 'āĻ…āĻ¨ā§āĻ¯'; > āĻ¤ā§āĻ°ā§āĻŸāĻŋ: āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ āĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻ¤ā§āĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž 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(āĻŽāĻŋāĻļā§āĻ° $āĻ‡āĻ¨āĻĒā§āĻŸ): āĻ•āĻ–āĻ¨āĻ‡ { āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž; }
  • āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨ array_is_list āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ° āĻ•ā§€āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¸ā§‚āĻšāĻ• āĻŽāĻžāĻ¨ āĻŦā§ƒāĻĻā§āĻ§āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, 0 āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡: $list = [“a”, “b”, “c”]; array_is_list($list); // true $notAList = [1 => “a”, 2 => “b”, 3 => “c”]; array_is_list($notAList); // āĻŽāĻŋāĻĨā§āĻ¯āĻž $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($alsoNotAList); // āĻŽāĻŋāĻĨā§āĻ¯āĻž
  • āĻ…āĻ­āĻŋāĻ­āĻžāĻŦāĻ• āĻļā§āĻ°ā§‡āĻŖā§€āĻ° āĻ§ā§āĻ°ā§āĻŦāĻ•āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ āĻšāĻ“āĻ¯āĻŧāĻž āĻĨā§‡āĻ•ā§‡ āĻ†āĻŸāĻ•āĻžāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ–āĻ¨ "āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤" āĻ•ā§€āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ•ā§āĻ˛āĻžāĻ¸ Foo { final public const X = "foo"; } āĻ•ā§āĻ˛āĻžāĻ¸ āĻŦāĻžāĻ° Foo { public const X = "bar" āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡; > āĻŽāĻžāĻ°āĻžāĻ¤ā§āĻŽāĻ• āĻ¤ā§āĻ°ā§āĻŸāĻŋ: Bar::X āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ§ā§āĻ°ā§āĻŦāĻ• Foo::X } āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻž
  • fsync āĻāĻŦāĻ‚ fdatasync āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ āĻœā§‹āĻ° āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ $file = fopen("sample.txt", "w"); fwrite($file, "āĻ•āĻŋāĻ›ā§ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§"); if (fsync($file)) { echo "āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤"; } fclose($file);
  • āĻĒā§‚āĻ°ā§āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻ‰āĻĒāĻ¸āĻ°ā§āĻ— "0" āĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻ…āĻ•ā§āĻŸāĻžāĻ˛ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ "0o" āĻāĻŦāĻ‚ "0O" āĻ‰āĻĒāĻ¸āĻ°ā§āĻ— āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ 016 === 0o16; // āĻ¸āĻ¤ā§āĻ¯ 016 === 0O16; // āĻ¸āĻ¤ā§āĻ¯
  • āĻāĻŸāĻŋ $GLOBALS-āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•ā§‡ āĻŦā§‡āĻ›ā§‡ āĻŦā§‡āĻ›ā§‡ āĻ¸ā§€āĻŽāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻĒāĻļā§āĻšāĻžāĻĻāĻ—āĻžāĻŽā§€ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯ā§‡āĻ° āĻ˛āĻ™ā§āĻ˜āĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•āĻ°āĻŦā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻ°āĻŦā§‡ā§ˇ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, $GLOBALS-āĻ āĻ˛ā§‡āĻ–āĻž āĻ…āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻžāĻ° āĻāĻŦāĻ‚ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž $GLOBALS āĻĒāĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻž āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ 2000āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖā§‡ āĻĻā§‡āĻ–āĻž āĻ—ā§‡āĻ›ā§‡ āĻ¯ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŽāĻžāĻ¤ā§āĻ° 23āĻŸāĻŋ āĻāĻ‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŸāĻŋ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻŋāĻ¤ āĻšāĻ˛ā§‡, 8.1 āĻ†āĻ° āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻž āĻ¯ā§‡āĻŽāĻ¨: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; āĻ†āĻ¨āĻ¸ā§‡āĻŸ($GLOBALS); by_ref($GLOBALS);
  • āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻ–āĻ¨ āĻ¸āĻ āĻŋāĻ• āĻŸāĻžāĻ‡āĻĒ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤. PHP 8.1-āĻ, āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ˜ā§‹āĻˇāĻŖāĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‡āĻ˛ā§‡ āĻ¨āĻž āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ‡āĻĒ āĻĢā§‡āĻ°āĻ¤ āĻĻāĻŋāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻŦā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ PHP 9.0-āĻ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤
  • āĻ°āĻŋāĻ¸ā§‹āĻ°ā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻĨā§‡āĻ•ā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§‡āĻŸ āĻ•āĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĢāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻœ āĻšāĻ˛āĻ¤ā§‡ āĻĨāĻžāĻ•ā§‡āĨ¤ finfo_* āĻāĻŦāĻ‚ imap_* āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  • āĻ…-āĻļā§‚āĻ¨ā§āĻ¯ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨āĻžāĻ˛ āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻžāĻ•ā§‡ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ PHP 8.1-āĻ, str_contains("āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚", null) āĻāĻ° āĻŽāĻ¤ āĻ•āĻ¨āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ PHP 9-āĻ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻŦā§‡āĨ¤
  • MurmurHash3 āĻāĻŦāĻ‚ xxHash āĻšā§āĻ¯āĻžāĻļāĻŋāĻ‚ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨