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

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

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

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

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

migration81.incompatible.php

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

PHP јадро

$GLOBALS Access Restrictions

Пристапот до $GLOBALS низот сега е предмет на голем број ограничувања. Читањето и запишувањето пристап до индивидуални елементи на низот како $GLOBALS['var'] продолжува да работи како што е. Читањето пристап до целиот $GLOBALS низ исто така продолжува да биде поддржано. Сепак, запишувањето пристап до целиот $GLOBALS низ веќе не е поддржано. На пример, array_pop($GLOBALS) ќе резултира со грешка.

Употребата на static Променливи во наследени методи

Кога метод што користи статички променливи е наследен (но не е препишан), наследениот метод сега ќе споделува статички променливи со родителскиот метод.

<?php
class A {
public static function
counter() {
static
$counter = 0;
$counter++;
return
$counter;
}
}
class
B extends A {}
var_dump(A::counter()); // int(1)
var_dump(A::counter()); // int(2)
var_dump(B::counter()); // int(3), previously int(1)
var_dump(B::counter()); // int(4), previously int(2)
?>
Ова значи дека статичките променливи во методите сега се однесуваат исто како статичките својства.

Опционални параметри специфицирани пред задолжителни параметри

Еден опционален параметар специфициран пред задолжителни параметри сега секогаш се третира како задолжителен, дури и кога се повикува користејќи именувани аргументи. Од PHP 8.0.0, но пред PHP 8.1.0, подолу е испуштено известување за депрекација при дефиницијата, но работи успешно кога се повикува. Од PHP 8.1.0, грешка од класа ArgumentCountError се фрла, како што би било кога се повикува со позициони аргументи.

<?php
function makeyogurt($container = "bowl", $flavour)
{
return
"Making a $container of $flavour yogurt.\n";
}
try
{
echo
makeyogurt(flavour: "raspberry");
}
catch (
Error $e)
{
echo
get_class($e), ' - ', $e->getMessage(), "\n";
}
?>

Излез од горниот пример во PHP 8.0:

Deprecated: Required parameter $flavour follows optional parameter $container
 in example.php on line 3
Making a bowl of raspberry yogurt.

Излез од горниот пример во PHP 8.1:

Deprecated: Optional parameter $container declared before required parameter
 $flavour is implicitly treated as a required parameter in example.php on line 3
ArgumentCountError - makeyogurt(): Argument #1 ($container) not passed

Имајте предвид дека вредноста по дифолт од null може да се користи пред задолжителните параметри за да се специфицира nullable тип, но параметарот ќе остане задолжителен.

Компатибилност на типот на враќање со внатрешни класи

Повеќето внатрешни методи што не се конечни сега бараат методи за преоптоварување да декларираат компатибилен тип на враќање, инаку се емитува известување за застареност за време на валидацијата на наследувањето. Во случај типот на враќање да не може да се декларира за метод за преоптоварување поради проблеми со компатибилноста помеѓу верзиите на PHP, а ReturnTypeWillChange Ако типот на враќање не може да се декларира за надредена метода поради проблеми со компатибилноста на PHP верзиите, може да се додаде

Нови клучни зборови

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

never сега е резервиран збор, така што не може да се користи за именување на класа, интерфејс или трејт, а исто така е забрането да се користи во имиња на простори.

Миграција на ресурси во објекти

Неколку resourceи се мигрирани во object. Проверките на вратената вредност користејќи is_resource() треба да се заменат со проверки за false.

  • На FileInfo , освен ако не е поинаку наведено. finfo објекти наместо fileinfo resources.

  • На FTP , освен ако не е поинаку наведено. FTP\Connection објекти наместо ftp resources.

  • На IMAP , освен ако не е поинаку наведено. IMAP\Connection објекти наместо imap resources.

  • На LDAP , освен ако не е поинаку наведено. LDAP\Connection објекти наместо ldap link resources.

  • На LDAP , освен ако не е поинаку наведено. LDAP\Result објекти наместо ldap result resources.

  • На LDAP , освен ако не е поинаку наведено. LDAP\ResultEntry објекти наместо ldap result entry resources.

  • На PgSQL , освен ако не е поинаку наведено. PgSql\Connection објекти наместо pgsql link resources.

  • На PgSQL , освен ако не е поинаку наведено. PgSql\Result објекти наместо pgsql result resources.

  • На PgSQL , освен ако не е поинаку наведено. PgSql\Lob објекти наместо pgsql large object resources.

  • На PSpell , освен ако не е поинаку наведено. PSpell\Dictionary објекти наместо pspell resources.

  • На PSpell , освен ако не е поинаку наведено. PSpell\Config објекти наместо pspell config resources.

MySQLi

mysqli_fetch_fields()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во mysqli_fetch_field_direct() will now always return 0 » PEAR max_lengthсега секогаш ќе враќа

На MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH . Оваа информација може да се пресмета со итерација низ множеството на резултати и земање на максималната должина. Ова е она што PHP го правеше внатрешно претходно.

На MYSQLI_STORE_RESULT_COPY_DATA опцијата веќе нема никакво влијание. mode параметарот функцијата е најчеста и комбинира извршна изјава со баферирано преземање на нејзиниот сет на резултати, ако постои, во еден повик. Повикување опцијата веќе нема никакво влијание. Поминувањето на каква било вредност на

веќе нема никакво влијание. сега враќа true наместо null на успешен исход.

mysqli::connect() Режимот за ракување со грешки по дифолт е променет од „тивок“ на „исклучоци“. Погледнете го MySQLi режим на известување mysqli_report(MYSQLI_REPORT_OFF);

страницата за повеќе детали за тоа што подразбира ова и како експлицитно да го поставите овој атрибут. За да го вратите претходното однесување користете: mysqli_stmt::bind_param() Класите што наследуваат од

MySQLnd

На mysqlnd.fetch_data_copy сега се обврзани да ја наведат дополнителната опционална параметар.

OpenSSL

INI директивата е отстранета. Ова не треба да резултира со промени во однесувањето видливи за корисникот. PKCSEC приватните клучеви сега ќе бидат извезени во

openssl_pkcs7_encrypt() and openssl_cms_encrypt() формат #8 наместо традиционалниот формат, исто како и сите други клучеви.

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

PDO::ATTR_STRINGIFY_FETCHES сега ќе користи AES-128-CBC наместо RC2-40 по дифолт. RC2-40 шифрата се смета за несигурна и не е овозможена по дифолт од OpenSSL 3. bool to "0" or "1"вредностите не можат да се претворат во boolсега ги претвора вредностите од типот

Повикување и ги доделува вредностите на колоните во вашето множество резултати на PHP променливите на кои биле поврзани со with PDO::PARAM_LOB не беа претворени во стринг. PDO::ATTR_STRINGIFY_FETCHES сега постојано ќе врзува стрим резултат кога

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

Цели броеви и децимални броеви во множествата со резултати сега ќе се враќаат користејќи ги нативните PHP типови наместо strings кога се користат емулирани подготвени изрази. Ова го одразува однесувањето на нативните подготвени изрази. Претходното однесување може да се врати со овозможување на PDO::ATTR_STRINGIFY_FETCHES option.

SQLite драјвер

Цели броеви и децимални броеви во множествата со резултати сега ќе се враќаат користејќи ги нативните PHP типови. Претходното однесување може да се врати со овозможување на PDO::ATTR_STRINGIFY_FETCHES option.

Phar

За да се усогласи со ArrayAccess интерфејс, Phar::offsetUnset() and PharData::offsetUnset() повеќе не враќаат bool.

Стандардно

version_compare() повеќе не прифаќа недокументирани кратенки на оператори.

htmlspecialchars(), htmlentities(), htmlspecialchars_decode(), html_entity_decode()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во get_html_translation_table() сега користат ENT_QUOTES | ENT_SUBSTITUTE отколку ENT_COMPAT по дифолт. Ова значи дека ' се избегнува во &#039; додека претходно ништо не се правеше. Дополнително, неправилно формиран UTF-8 ќе биде заменет со уникод-симбол за замена, наместо да резултира со празен стринг.

debug_zval_dump() сега го печати рефбројот на обвивките на референцата со нивниот рефброј, наместо само да го претходи & на вредноста. Ова попрецизно ја моделира репрезентацијата на референцата од PHP 7.0.

debug_zval_dump() сега печати interned наместо лажен рефброј за интерни стрингови и непроменливи низи.

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

SplFixedArray, сега ќе бидат JSON кодирани како array

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

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

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

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

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

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

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