PHP 7.4 програмчлалын хэлний хувилбар

Жилийн хөгжлийн дараа танилцуулсан програмчлалын хэлний хувилбар PHP 7.4. Шинэ салбар нь хэд хэдэн шинэ функцууд, түүнчлэн нийцтэй байдлыг зөрчсөн хэд хэдэн өөрчлөлтийг багтаасан болно.

Түлхүүр сайжруулалт PHP 7.4 дээр:

  • Бичсэн шинж чанарууд - ангийн шинж чанарууд одоо төрлийн мэдэгдлийг багтааж болно, жишээлбэл:

    ангийн хэрэглэгч {
    public int $id;
    нийтийн мөр $name;
    }

  • Товчилсон "fn(parameter_list) => expr" функцийг тодорхойлох синтакс нь хамрах хүрээг утгаараа холбосон. Жишээлбэл, “fn($x) => $x + $y” нь “$fn2 = функц ($x) ашиглах ($y) {буцах $x + $y;}”);
  • Богино хугацааны даалгаварын оператор Өгөгдмөл утгыг тодорхойлоход ашиглаж болох "??=" ("a ??= b" нь "a = a ?? b"-тэй төстэй, хэрэв "a" нь тодорхойлогдсон бол түүний утгыг хадгална, хэрэв тодорхойлогдоогүй бол энэ нь хадгалагдана. "b" утгыг өгсөн байна );
  • Хязгаарлагдмал боломж үүсмэл өгөөжийн төрлүүдийн төрлүүдийн удамшлын шатлалыг хадгалах, эсвэл үүссэн аргументийн төрлүүдийн анхны төрлүүдийн шатлалыг өөрчлөх чадвар (ковариац буцаах төрөл ба аргументийн төрлийн зөрчил). Дараах бүтцийг одоо PHP дээр ашиглаж болно.

    А анги {}
    B анги нь А {}

    ангийн продюсер {
    нийтийн функцийн арга(): A {}
    }
    class ChildProducer Продюсерыг өргөтгөх {
    нийтийн функцийн арга(): B {}
    }

  • “…$var” массив доторх операторыг задлах, зөвшөөрөх шинэ массивыг тодорхойлохдоо одоо байгаа массивыг орлуулах;

    $parts = ['алим', 'лийр'];
    $fruits = ['банана', 'улбар шар', ...$хэсэг, 'тарвас'];
    // ['гадил', 'улбар шар', 'алим', 'лийр', 'тарвас'];

  • Боломж тоон литерал (1_000_000_00) дахь зааглагч бүхий том тооны дүрслэл;
  • тусламж сул холбоосууд, энэ нь объектын лавлагааг хадгалах боломжийг олгодог боловч хог цуглуулагчийг холбогдох объектыг устгахыг хориглодоггүй;
  • шинэ механизмыг объектын цуваа (Serializable болон __sleep()/__wakeup()-ийн хослол), энэ нь хуучирсан Serializable интерфэйсийг орлуулсан;

    // Объектийн бүх төлөвийг агуулсан массивыг буцаана;
    нийтийн функц __serialize(): массив;

    // Массиваас объектын төлөвийг сэргээнэ
    нийтийн функц __ unserialize($өгөгдлийн массив): хүчингүй;

  • Аргын үл хамаарах зүйлүүдийг хаяхыг зөвшөөрсөн __toString();
  • Объект кодын кэшийг урьдчилан ачаалах дэмжлэг нэмэгдсэн. Тохируулах параметрийг нэмсэн
    opcache.preload, үүгээр дамжуулан та PHP скриптийг зааж өгөх боломжтой бөгөөд үүнийг хөрвүүлж, сервер эхлэхэд ажиллуулах болно. Энэ скрипт нь бусад файлуудын opcode-г шууд оруулах эсвэл opcache_compile_file() функцийг ашиглан ачаалах боломжтой;

  • Castagnoli олон гишүүнт ашиглан хяналтын нийлбэрийг тооцоолохын тулд Hash өргөтгөлд crc32c функцийг нэмсэн;
  • Хэрэв PHP нь либаргонгүйгээр бүтээгдсэн бол Sodium номын сангийн хэрэгжилтэд argon2i болон argin2id нууц үгийг хэшлэх аргуудын password_hash() функцэд дэмжлэг нэмсэн;
  • str_split()-тэй төстэй mb_str_split() функцийг нэмсэн, гэхдээ байтаар биш, харин олон байт мөр дэх тэмдэгтийн байрлалаар ажилладаг;
  • strip_tags() функц нь одоо хаягийн нэр бүхий массив дамжуулах чадвартай болсон. strip_tags($str, '')-ын оронд та одоо strip_tags($str, ['a', 'p']) зааж өгч болно;
  • proc_open() нь мөрийг ажиллуулахын оронд операндуудыг массив дотор жагсаах боломжийг олгодог бөгөөд мөн урсгалыг дахин чиглүүлэх, null файлын тодорхойлогчийг дэмждэг;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // Бүрхүүл дэх 2>&1 шиг
    proc_open($cmd, [1 => [‘хоолой’, ‘w’], 2 => [‘дахин чиглүүлэх’, 1]], $pipes);

    // бүрхүүлд 2>/dev/null эсвэл 2>nul гэх мэт
    proc_open($cmd, [1 => [‘хоолой’, ‘w’], 2 => [‘null’]], $pipes);

  • Firebird/Interbase, Recode болон WDDX өргөтгөлүүдийг үндсэн хуваарилалтаас хассан. Эдгээр өргөтгөлүүдийг одоо PECL-ээр дамжуулан түгээдэг;
  • Ангилал руу шилжүүлсэн хуучирсан хаалтгүйгээр үүрлэсэн гурвалсан операторууд, буржгар хаалт ("$var{$idx}") ашиглан массивын элементүүд болон мөрүүдэд хандах, is_real() функц болон эх ангигүйгээр эх түлхүүр үгийг ашиглах, allow_url_include тохиргоо зэрэг функцууд , объектууд дээр array_key_exists()-г ашиглах.

    get_magic_quotes_gpc(), get_magic_quotes_runtime() болон функцууд
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Функцуудад буруу тэмдэгтүүдийг боловсруулах гэж оролдох үед хуучирсан функцийг ашиглах тухай анхааруулга өгсөн.
    base_convert(), bindec(), octdec() болон hexdec(), мөн mb_ereg_replace()-д мөргүй хэв маягийг зааж өгөх үед.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх