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

Нови одлики

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

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

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

migration84.new-features.php

Нови одлики

PHP јадро

Hooks за имот

Својствата на објектите сега можат да имаат дополнителна логика поврзана со нивните get and set операции. Во зависност од употребата, тоа може или не може да го направи својството виртуелно, односно, воопшто да нема вредност за поддршка.

<?php
class Person
{
// A "virtual" property. It may not be set explicitly.
public string $fullName {
get => $this->firstName . ' ' . $this->lastName;
}

// All write operations go through this hook, and the result is what is written.
// Read access happens normally.
public string $firstName {
set => ucfirst(strtolower($value));
}

// All write operations go through this hook, which has to write to the backing value itself.
// Read access happens normally.
public string $lastName {
set {
if (
strlen($value) < 2) {
throw new
\InvalidArgumentException('Too short');
}
$this->lastName = $value;
}
}
}

$p = new Person();

$p->firstName = 'peter';
print
$p->firstName; // Prints "Peter"
$p->lastName = 'Peterson';
print
$p->fullName; // Prints "Peter Peterson"

Пример #1 Декларација на својство

Својствата на објектите сега можат да имаат свои set видливост контролирана одделно од get visibility.

<?php
class Example
{
// The first visibility modifier controls the get-visibility, and the second modifier
// controls the set-visibility. The get-visibility must not be narrower than set-visibility.
public protected(set) string $name;

public function
__construct(string $name)
{
$this->name = $name;
}
}

Мрзливи објекти

Сега е можно да се создадат објекти чие иницијализирање се одложува додека не им се пристапи. Библиотеките и рамките можат да ги искористат овие мрзливи објекти за да го одложат преземањето податоци или зависности потребни за иницијализација.

<?php
class Example
{
public function
__construct(private int $data)
{
}

// ...
}

$initializer = static function (Example $ghost): void {
// Fetch data or dependencies
$data = getData();
// Initialize
$ghost->__construct($data);
};

$reflector = new ReflectionClass(Example::class);
$object = $reflector->newLazyGhost($initializer);

#[\Deprecated] attribute

Новиот Застарено атрибутот може да се користи за означување на функции, методи и класни константи како застарени. Однесувањето на функционалноста застарена со овој атрибут се совпаѓа со однесувањето на постоечкиот механизам за застарување за функционалноста обезбедена од самиот PHP. Единствениот исклучок е што емитираниот код за грешка е E_USER_DEPRECATED наместо E_DEPRECATED.

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

Парсирање на RFC1867 (multipart) барања во не-POST HTTP барања

Додадено request_parse_body() функција што овозможува парсирање на RFC1867 (multipart) барања во не-POST HTTP барања.

Поврзување new изрази без загради

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

Подобрени информации за отстранување грешки за WeakReference

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

Подобрени информации за отстранување грешки за Затворање

Излезот од = "static" сега ги вклучува името, датотеката и линијата на Затворање.

Дефинирање на идентични симболи во различни блокови на именски простори

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

cURL

curl_version() враќа дополнително feature_list вредност, што е асоцијативен список на сите познати cURL карактеристики и дали тие се поддржани (true) или не (false).

Додадено CURL_HTTP_VERSION_3 and CURL_HTTP_VERSION_3ONLY константи (достапни од libcurl 7.66 и 7.88) како достапни опции за CURLOPT_HTTP_VERSION.

Додадено CURLOPT_PREREQFUNCTION како cURL опција што прифаќа callable што треба да се повика откако ќе се воспостави врската, но пред да се испрати барањето. Овој повик мора да врати или CURL_PREREQFUNC_OK or CURL_PREREQFUNC_ABORT за да го дозволи или прекине барањето.

Додадено CURLOPT_SERVER_RESPONSE_TIMEOUT, што претходно беше познато како CURLOPT_FTP_RESPONSE_TIMEOUT. Двете константи ја имаат истата вредност.

Додадено CURLOPT_DEBUGFUNCTION како cURL опција што прифаќа callable што се повикува за време на животниот циклус на барањето со CurlHandle објект, цел број што го содржи типот на пораката за отстранување грешки и стринг што го содржи пораката за отстранување грешки. Типот на пораката за отстранување грешки е една од следниве константи:

Откако ќе се постави оваа опција, CURLINFO_HEADER_OUT не смее да се постави бидејќи користи иста функционалност на libcurl.

На curl_getinfo() сега враќа дополнителен posttransfer_time_us клуч, што го содржи бројот на микросекунди од почетокот до испраќањето на последниот бајт. Кога се следи пренасочување, времето од секое барање се собира. Оваа вредност може да се добие и со поминување CURLINFO_POSTTRANSFER_TIME_T на curl_getinfo() option параметар. Ова бара libcurl 8.10.0 или понова верзија.

DOM

Додаден е Дом простор со нови класи како пандан на постоечките DOM класи (на пр. Dom\Node е новиот DOMNode). Овие класи се компатибилни со HTML 5 и се усогласени со спецификацијата WHATWG; решавајќи долгогодишни грешки во DOM екстензијата. Старите DOM класи остануваат достапни за компатибилност со претходните верзии.

Додаден е Јазол за кој треба да се спореди позицијата, во однос на овој јазол. со неговите поврзани константи:

Сега е можно да се помине било кој повик до Пример #1 book.xml. Понатаму, со DOMXPath::registerPhpFunctionNs(), сега може да се регистрираат повици кои ќе користат нативна синтакса за повикување функции наместо да користат php:function('name').

Меѓународен

Додаден е NumberFormatter::ROUND_HALFODD за да го надополни постоечкото NumberFormatter::ROUND_HALFEVEN functionality.

OpenSSL

Додадена е поддршка за клучеви базирани на Curve25519 + Curve448. Конкретно, полињата x25519, ed25519, x448 и ed448 се поддржани во openssl_pkey_new(), openssl_pkey_get_details(), openssl_sign()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во openssl_verify() беа проширени за да ги поддржат тие клучеви.

Имплементирајте PASSWORD_ARGON2 хеширање на лозинки. Потребно е OpenSSL 3.2 и NTS билд.

PCRE

Приложената pcre2lib е ажурирана на верзија 10.44. Како последица, додадена е поддршка за LoongArch JIT, сега се дозволени празни места помеѓу загради во Perl-компатибилни ставки и сега се поддржани изјави за поглед назад со променлива должина.

Со pcre2lib верзија 10.44, максималната должина на именуваните групи за фаќање е променета од 32 to 128.

Додадена е поддршка за r (PCRE2_EXTRA_CASELESS_RESTRICT) модификатор, како и (?r) модификатор на режим. Кога е овозможено заедно со модификаторот за нечувствителност на големи и мали букви (i), изразот го исклучува мешањето на ASCII и не-ASCII знаци.

PDO

Додадена е поддршка за подкласи специфични за драјверот за да се поддржат подобро функционалностите специфични за базата на податоци. Новите класи може да се инстанцираат или со повикување на PDO::connect() методот или со директно инстанцирање на една од подкласите специфични за драјверот.

Додадена е поддршка за SQL парсери специфични за драјверот. Кога не е достапен парсер специфичен за драјверот, се користи стандардниот парсер. Стандардниот парсер поддржува:

  • единечни и двојни наводници, со дуплирање како механизам за бегство
  • двојни цртички и не-вгнездени коментари во C стил

PDO_MYSQL

Додаден е прилагоден парсер кој поддржува:

  • единечни и двојни наводници, со дуплирање и обратна коса црта како механизам за бегство
  • буквални идентификатори со апостроф и удвојување како механизам за бегство
  • две цртички проследени со најмалку 1 празно место, негнездени C-стил коментари и хеш-коментари

PDO_PGSQL

Додаден е прилагоден парсер кој поддржува:

  • единечни и двојни наводници, со дуплирање како механизам за бегство
  • C-стил "бегство" низови (E'string')
  • низови со долар-цитирање
  • две цртички и C-стил коментари (негнездени)
  • поддршка за ?? како секвенца за бегство за ? operator

PDO_SQLITE

Додаден е прилагоден парсер кој поддржува:

  • единечни, двојни и апострофни буквални вредности, со удвојување како механизам за бегство
  • квантифицирање со квадратни загради за идентификатори
  • две цртички и C-стил коментари (негнездени)

Phar

Додадена е поддршка за екстензијата за временски печат на Unix за Zip архиви.

script.bat -h

Додадена е можност за промена на .php_history патот низ PHP_HISTFILE променливата на околината.

Рефлексија

ReflectionAttribute сега содржи name својство за подобрување на искуството за отстранување грешки.

ReflectionClassConstant::__toString() and (стандардно) ќе го направи спротивното. сега ги враќа приложените коментари за документација.

Додадени се повеќе нови методи и константи кои се поврзани со функцијата за мрзливи објекти:

SOAP

Додадена е поддршка за clark нотација за простори на имиња во мапата на класи. Сега е можно да се наведат записи во мапата на класи со clark нотација за да се реши тип со специфичен простор на имиња до специфична класа. На пример: '{http://example.com}foo' => 'FooClass'.

Инстанци на DateTimeInterface што се проследуваат до xsd:datetime или слични елементи сега се серијализираат како такви наместо да се серијализираат како празен стринг.

Перзистентноста на сесијата сега работи со заеднички модул за сесии.

Стандардно

Додадена е нова RoundingMode enum со појасно именување и подобрена откриеност во споредба со PHP_ROUND_* константи. Покрај тоа, беа додадени четири нови режими на заокружување кои се достапни само преку новиот RoundingMode enum.

XSL

Сега е можно да се користат параметри што содржат единечни и двојни наводници.

Сега е можно да се помине било кој повик до XSLTProcessor::registerPhpFunctions().

Додадено XSLTProcessor::$maxTemplateDepth and XSLTProcessor::$maxTemplateVars за контрола на длабочината на рекурзијата на евалуацијата на XSL шаблоните.

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

Додаден е ZipArchive::ER_TRUNCATED_ZIP константа, која беше додадена во libzip 1.11.

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

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

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

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

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

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

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