PHP.mk документација

Нови одлики

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

migration80.new-features.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека migration80.new-features.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Нови одлики

Референца за `migration80.new-features.php` со подобрена типографија и навигација.

migration80.new-features.php

Нови одлики

PHP јадро

. Празен стринг (

Поддршка за . Празен стринг ( е додадена.

Атрибути

Поддршка за Атрибути е додадена.

Промоција на својства на конструктор

Поддршка за промоција на својства на конструкторот (декларирање својства во потпис на конструктор) е додадено.

Израз за совпаѓање

Поддршка за match expressions е додадена.

Оператор за безбедност од null

Поддршка за nullsafe оператор (?->) е додадено.

Други нови одлики

  • На WeakMap класа е додадена.

  • На ValueError класа е додадена.

  • Сега кој било број на параметри на функција може да се замени со варијаден аргумент, сè додека типовите се компатибилни. На пример, следниот код сега е дозволен:

    <?php
    class A {
    public function
    method(int $many, string $parameters, $here) {}
    }
    class
    B extends A {
    public function
    method(...$everything) {}
    }
    ?>
  • static (како во „доцна статична врска“) сега може да се користи како тип на враќање:

    <?php
    class Test {
    public function
    create(): static {
    return new static();
    }
    }
    ?>
  • Сега е можно да се добие името на класата на објект користејќи $object::class. Резултатот е ист како get_class($object).

  • new and instanceof сега може да се користи со произволни изрази, користејќи new (expression)(...$args) and $obj instanceof (expression).

  • Применети се некои поправки на конзистентноста на синтаксата на променливите, на пример пишување Foo::BAR::$baz сега е дозволено.

  • Додадено Serializable интерфејс, кој автоматски се имплементира ако класата дефинира __toString() method.

  • Трајтите сега можат да дефинираат апстрактни приватни методи. Таквите методи мора да бидат имплементирани од класата што го користи трајтот.

  • throw сега може да се користи како израз. Тоа дозволува употреби како што се:

    <?php
    $fn
    = fn() => throw new Exception('Exception in arrow function');
    $user = $session->user ?? throw new Exception('Must have user');
  • Сега е дозволена опционална запирка на крајот во списоците со параметри.

    <?php
    function functionWithLongSignature(
    Type1 $parameter1,
    Type2 $parameter2, // <-- This comma is now allowed.
    ) {
    }
  • Сега е можно да се напише catch (Exception) за фаќање исклучок без да се чува во променлива.

  • Поддршка за mixed типот е додаден.

  • Приватните методи декларирани во родителска класа веќе не наметнуваат никакви правила за наследување на методите на детето класа (со исклучок на финални приватни конструктори). Следниот пример илустрира кои ограничувања се отстранети:

    <?php
    class ParentClass {
    private function
    method1() {}
    private function
    method2() {}
    private static function
    method3() {}
    // Throws a warning, as "final" no longer has an effect:
    private final function method4() {}
    }
    class
    ChildClass extends ParentClass {
    // All of the following are now allowed, even though the modifiers aren't
    // the same as for the private methods in the parent class.
    public abstract function method1() {}
    public static function
    method2() {}
    public function
    method3() {}
    public function
    method4() {}
    }
    ?>
  • get_resource_id() е додаден, кој враќа иста вредност како (int) $resource. Обезбедува иста функционалност под појасен API.

  • На InternalIterator е додадена.

Датум и време

DOM

DOMParentNode and DOMChildNode со нови API за траверзал и манипулација се додадени.

Филтер

FILTER_VALIDATE_BOOL е додаден како алијас за FILTER_VALIDATE_BOOLEAN. Новиот назив е префериран, бидејќи го користи канонското име на типот.

Омажи

enchant_dict_add(), enchant_dict_is_added()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во LIBENCHANT_VERSION се додадени.

FPM

Додадена е нова опција pm.status_listen што овозможува добивање на статусот од различни крајни точки (на пр. порта или UDS датотека) што е корисно за добивање на статусот кога сите деца се зафатени со сервисирање на долги барања.

Хеш

HashContext објектите сега можат да бидат серијализирани.

Меѓународни функции

На IntlDateFormatter::RELATIVE_FULL, IntlDateFormatter::RELATIVE_LONG, IntlDateFormatter::RELATIVE_MEDIUMПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во IntlDateFormatter::RELATIVE_SHORT константите се додадени.

LDAP

ldap_count_references() е додаден, кој го враќа бројот на референтни пораки во резултат од пребарување.

OPcache

Ако е овозможена опцијата ini opcache.record_warnings, OPcache ќе снима предупредувања при компилација и ќе ги репродуцира при следниот include, дури и ако е сервиран од кешот.

OpenSSL

Додадена поддршка за Cryptographic Message Syntax (CMS) (» RFC 5652) составена од функции за шифрирање, дешифрирање, потпишување, верификација и читање. API-то е слично на API-то за PKCS #7 функции со додавање на нови константи за кодирање: OPENSSL_ENCODING_DER, OPENSSL_ENCODING_SMIME and OPENSSL_ENCODING_PEM:

  • openssl_cms_encrypt() ја шифрира пораката во датотеката со сертификати и го прикажува резултатот во дадената датотека.
  • openssl_cms_decrypt() што ја дешифрира S/MIME пораката во датотеката и ги прикажува резултатите во дадената датотека.
  • openssl_cms_read() што го извезува CMS датотеката во низа од PEM certificates.
  • openssl_cms_sign() што ја потпишува MIME пораката во датотеката со сертификат и клуч и го прикажува резултатот во дадената датотека.
  • openssl_cms_verify() што проверува дека блокот со податоци е недопрен, потписникот е оној што тврди дека е, и ги враќа сертификатите на потписниците.

Регуларни изрази (компатибилни со Perl)

preg_last_error_msg() е додадено, кое враќа порака читлива за човекот за последната PCRE грешка. Го надополнува preg_last_error(), кое враќа цел број enum вредност наместо тоа.

SQLite3

тогаш операцијата DELETE продолжува, но оптимизацијата за скратување е оневозможена и сите редови се бришат поединечно. и соодветните константи на класата се додадени за да се постави callback од корисничко ниво што ќе се користи за овластување или не на акција на базата на податоци.

Стандардна библиотека

  • str_contains(), str_starts_with() and str_ends_with() се додадени, кои проверуваат дали haystack содржи, започнува со или завршува со needle, соодветно.

  • fdiv() е додадено, кое врши делење со пловечка запирка под IEEE 754 семантика. Делењето со нула се смета за добро дефинирано и ќе врати една од Inf, -Inf or NaN.

  • get_debug_type() е додадено, кое враќа тип корисен за пораки за грешки. За разлика од gettype(), користи канонски имиња на типови, враќа имиња на класи за објекти и укажува на типот на ресурс за ресурси.

  • printf() и пријателите сега поддржуваат %h and %H спецификатори за форматирање. Тие се исти како %g and %G, но секогаш користат "." како децимален сепаратор, наместо да го одредуваат преку LC_NUMERIC locale.

  • printf() и слични сега поддржуваат користење "*" како ширина или прецизност, во кој случај ширината/прецизноста се предава како аргумент на printf. Ова исто така овозможува користење на прецизност -1 with %g, %G, %h and %H. На пример, следниот код може да се користи за репродукција на стандардното форматирање на PHP со пловечка запирка:

    <?php
    printf
    ("%.*H", (int) ini_get("precision"), $float);
    printf("%.*H", (int) ini_get("serialize_precision"), $float);
    ?>
  • proc_open() сега поддржува дескриптори на псевдо-терминал (PTY). Следното прикачува stdin, stdout and stderr на истиот PTY:

    <?php
    $proc
    = proc_open($command, [['pty'], ['pty'], ['pty']], $pipes);
    ?>
  • proc_open() сега поддржува дескриптори на пар сокети. Следното прикачува посебен пар сокети на stdin, stdout and stderr:

    <?php
    $proc
    = proc_open($command, [['socket'], ['socket'], ['socket']], $pipes);
    ?>

    За разлика од цевките, сокетите не страдаат од проблеми со блокирачко I/O на Windows. Сепак, не сите програми може да работат правилно со stdio сокети.

  • Функциите за сортирање сега се стабилни, што значи дека елементите со еднакви вредности ќе го задржат својот оригинален редослед.

  • array_diff(), array_intersect() и нивните варијации сега може да се користат со еден аргумент од тип низа. Ова значи дека употреби како следното се сега можни:

    <?php
    // OK even if $excludes is empty:
    array_diff($array, ...$excludes);
    // OK even if $arrays only contains a single array:
    array_intersect(...$arrays);
    ?>
  • На flag параметарот ob_implicit_flush() беше променет за да прифати bool наместо int.

Tidy

PhpToken додава интерфејс базиран на објекти на токенизерот. Обезбедува поуниформна и ергономска репрезентација, додека е поефикасен во меморијата и побрз.

candido1212 на yahoo точка com точка br

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.