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

Некомпатибилни промени воназад

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

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

Референца за `migration74.incompatible.php` со подобрена типографија и навигација.

migration74.incompatible.php

Некомпатибилни промени воназад

PHP јадро

Пристап во стил на низа до не-низи

Пристап до низи со стил на низа (Array-style access) на не-низи null, bool, int, float or resource Обидот да се користат вредности од тип $null["key"]како низа (како што е

get_declared_classes() function

На get_declared_classes() ) сега ќе генерира известување.

fn keyword

fn функцијата повеќе не враќа анонимни класи што сè уште не се инстанцирани.

<?php сега е резервиран збор. Особено, веќе не може да се користи како име на функција или класа. Сè уште може да се користи како име на метод или константа на класа.

<?php таг на крајот од датотеката php на крајот од датотеката (без завршен нов ред) сега ќе се толкува како отворен PHP таг. Претходно се толкуваше или како краток отворен таг проследен со буквално short_open_tag=1и резултираше со синтаксна грешка (со <?php ) или се толкуваше како буквално short_open_tag=0).

низа (со

Stream wrappers Кога се користи include/require на стрим, streamWrapper::stream_set_option() STREAM_OPTION_READ_BUFFER ќе биде повикан со Кога се користи include/require на стрим, опција. Прилагодените имплементации на stream wrapper можеби ќе треба да ја имплементираат false методот за да избегнат предупредување (секогаш враќање

Серијализација

На o е доволна имплементација).

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

Идентификаторите на алгоритмот за хеширање на лозинката сега се ништовни низи наместо цели броеви.

Апликациите што правилно ги користат константите PASSWORD_DEFAULT, PASSWORD_BCRYPT, PASSWORD_ARGON2I и PASSWORD_ARGON2ID ќе продолжат да функционираат правилно.

htmlentities() function

htmlentities() сега ќе подигне известување (наместо предупредување за строги стандарди) ако се користи со кодирање за кое е поддржана само основна замена на ентитети, во кој случај е еквивалентно на htmlspecialchars().

fread() and fwrite() function

fread() and fwrite() сега ќе врати false ако операцијата не успеа. Претходно беше вратен празен стринг или 0. EAGAIN/EWOULDBLOCK не се сметаат за неуспеси.

Овие функции сега исто така подигнуваат известување при неуспех, како при обид за пишување во ресурс на датотека само за читање.

BCMath Математика со произволна прецизност

BCMath функциите сега ќе предупредат ако се помине неформиран број, како што е "32foo". Аргументот ќе се толкува како нула, како и порано.

CURL

Обидот за серијализирање на CURLFile класа сега ќе генерира исклучок. Претходно исклучокот беше фрлен само при десериализација.

Пронајдете и отворете ја конфигурациската датотека на Apache. Стандардно, локацијата е како што следува: CURLPIPE_HTTP1 е застарен и повеќе не се поддржува од cURL 7.62.0.

На $version параметарот curl_version() е застарен. Ако било која вредност што не е еднаква на стандардната CURLVERSION_NOW се помине, се подигнува предупредување и параметарот се игнорира.

Датум и време

Повикување var_dump() или слично на DateTime or DateTimeImmutable инстанца повеќе нема да остава пристапни својства на објектот.

Споредба на DateInterval објекти (користејќи ==, <, и така натаму) сега ќе генерираат предупредување и секогаш ќе враќаат false. Претходно сите DateInterval објекти се сметаа за еднакви, освен ако немаа својства.

Меѓународен

Стандардната вредност на параметарот на idn_to_ascii() and idn_to_utf8() сега е INTL_IDNA_VARIANT_UTS46 наместо застареното INTL_IDNA_VARIANT_2003.

MySQLi

Вградената серверска функционалност е отстранета. Беше неисправна од најмалку PHP 7.0.

Недокументираниот mysqli::$stat својство е отстрането во корист на mysqli::stat().

OpenSSL

На openssl_random_pseudo_bytes() функцијата сега ќе фрли исклучок во ситуации на грешка, слично на random_bytes(). Особено, а Грешка се фрла ако бројот на барани бајти е помал или еднаков на нула, и а Исклучок се фрла ако не може да се собере доволно случајност. На $crypto_strong аргументот за излез е загарантирано секогаш да биде true ако функцијата не фрли, така што експлицитното проверување не е потребно.

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

Кога PREG_UNMATCHED_AS_NULL режим се користи, заостанатите несовпаѓачки групи за фаќање сега исто така ќе бидат поставени на null (или [null, -1] ако е овозможено фаќање на поместување). Ова значи дека големината на $matches секогаш ќе биде иста.

PHP Објекти за податоци

Обидот за серијализирање на PDO or PDOStatement инстанца сега ќе генерира а Исклучок отколку PDOException, во согласност со другите внатрешни класи кои не поддржуваат серијализација.

Рефлексија

Објектите за рефлексија сега ќе генерираат исклучок ако се обиде да се серијализираат. Серијализацијата за објекти за рефлексија никогаш не беше поддржана и резултираше со оштетени објекти за рефлексија. Сега е експлицитно забранета.

Вредностите на константата на класата на ReflectionClassConstant, ReflectionMethod and ReflectionProperty се промени.

Стандардна PHP библиотека (SPL)

Повикување get_object_vars() на ArrayObject инстанца сега секогаш ќе ги враќа својствата на ArrayObject само (или подкласа). Претходно враќаше вредности на обвитканиот массив/објект освен ако не беше наведен знаменцето. ArrayObject::STD_PROP_LIST Други засегнати операции се:

, итн. Користете

  • ReflectionProperty::setRawValue()
  • reset(), current()методи наместо тоа. Итератор Потенцијално други кои работат на својства на објекти како листа, на пр.
  • префрлањата не се засегнати. Тие ќе продолжат да враќаат или обвитканиот массив, или array_walk().

(array) својства, во зависност од тоа дали ArrayObject SplPriorityQueue::setExtractFlags() ArrayObject::STD_PROP_LIST флагот се користи.

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

ArrayObject, ArrayIterator, SplDoublyLinkedList and SplObjectStorage сега поддржува __serialize() and __unserialize() интерфејс. Ова значи дека товарите за серијализација создадени на постари верзии на PHP сè уште можат да бидат десеријализирани, но новите товари создадени од PHP 7.4 нема да бидат разбрани од постарите верзии. Countable сега ќе емитува

Tidy

token_get_all() токен за неочекувани знаци наместо да остава дупки во потокот на токени. T_BAD_CHARACTER Од PHP 7.4.11,

Дојдовни колачиња

happydog at kennel17 names на дојдовните колачиња веќе не се url-декодираат од безбедносни причини.

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

happydog на kennel17
пред 5 години
Re: "The o serialization format has been removed. As it is never produced by PHP, this may only break unserialization of manually crafted strings."

This little-o serialisation format was used by PHP3 but was never generated by PH PHP4 or above.  The deserialization code still recognised it, though, for reasons of backwards-compatibility with PHP3.

However, based on a bit of investigation, it looks like this code has been broken for about 15 years, so although this is listed as a deprecation, in practice it wasn't.

See this Stack Overflow question for a really great answer, with a lot more detail about this: https://stackoverflow.com/questions/65289729/what-was-phps-o-serialization-format-for
На оваа страница

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

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

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

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

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