āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ āĻŦāĻāĻ° āĻĒāĻ°, āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ 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