Нови одлики
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Нови одлики
Референца за `migration81.new-features.php` со подобрена типографија и навигација.
Нови одлики
PHP јадро
Префикс за октални литерали на цели броеви
Окталните броеви сега можат да користат експлицитен
0o/0O
префикс во литерали на цели броеви, слично на бинарни и хексадецимални литерали на цели броеви.
<?php
014; // Non-prefix octal literal
0o14; // Prefixed octal literal
?>Расклопување на низи со клучни зборови од тип стринг
Додадена е поддршка за расклопување на низи со клучни зборови од тип стринг.
<?php
$arr1 = [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>Именуван аргумент по расклопување на аргумент
It is now possible to specify named arguments after an argument unpack. e.g. foo(...$args, named: $arg).
Клуч за целосна патека за поставување датотеки
Поставувањата на датотеки сега обезбедуваат дополнителен full_path клуч, кој ја содржи целосната патека (наместо само основниот дел) на поставената датотека. Ова е наменето за употреба во комбинација со "upload webkitdirectory".
Енумерации
Поддршка за Енумерации е додадена.
Влакна
Поддршка за Влакна е додадена.
Синтакса за повикливи објекти од прва класа
Затворањата за повикливи објекти сега можат да се креираат со користење на синтаксис myFunc(...), што е идентично со Closure::fromCallable('myFunc').
Забелешка: На
...Пример #1 Едноставна синтакса за повикливи од прва класа
Типови на пресек
Поддршка за типови на пресек е додадена.
Унија на типови. не може да се користи заедно со Првпат објавен во 2020 година, PHP 8.0 беше уште едно големо ажурирање на јазикот PHP. Содржеше многу нови функции и оптимизации, вклучувајќи
Тип никогаш
Додаден е нов тип само за враќање never е додаден. Ова укажува дека функцијата или exit(), фрла исклучок, или не завршува.
new во Иницијализатори
Сега е можно да се користи new ClassName() изрази како стандардна вредност на параметар, статичка променлива, иницијализатори на глобални константи и како аргументи на атрибути. Објектите исто така можат да се проследат до define() now.
Својства само за читање
Поддршка за readonly е додадена.
Константи на финална класа
Додадена е поддршка за the final модификатор за константи на класа. Исто така, константите на интерфејсот стануваат презапишливи по дифолт.
CURL
Додаден е CURLOPT_DOH_URL option.
Додадени опции за blob сертификат кога libcurl >= 7.71.0:
-
CURLOPT_ISSUERCERT_BLOB -
CURLOPT_PROXY_ISSUERCERT -
CURLOPT_PROXY_ISSUERCERT_BLOB -
CURLOPT_PROXY_SSLCERT_BLOB -
CURLOPT_PROXY_SSLKEY_BLOB -
CURLOPT_SSLCERT_BLOB -
CURLOPT_SSLKEY_BLOB
Додадено CURLStringFile, што може да се користи за испраќање датотека од string наместо датотека:
<?php
$file = new CURLStringFile($data, 'filename.txt', 'text/plain');
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);
?>FPM
Додаден е формат за статус openmetrics. Може да се користи од Prometheus за преземање FPM метрики.
Додадена е нова опција за пул за динамичниот менаџер на процеси наречен
pm.max_spawn_rate. Овозможува стартување на одреден број деца со побрза стапка кога е избран динамичен pm. Стандардната вредност е 32 , што беше претходната тврдо кодирана вредност.
GD
Поддршката за Avif сега е достапна преку imagecreatefromavif() and imageavif(), ако libgd е компајлиран со поддршка за Avif.
Хеш
Следниве функции hash(),
hash_file()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во hash_init()
сега поддржуваат дополнителен опционален options
аргумент, кој може да се користи за проследување на податоци специфични за алгоритмот.
MurmurHash3
Додадена е поддршка за MurmurHash3 со поддршка за стриминг. Реализирани се следните варијанти:
- murmur3a, 32-битна хаш
- murmur3c, 128-битна хаш за x86
- murmur3f, 128-битна хаш за x64
Почетната состојба на хашот може да се помине преку seed
клучот во options низата, на пример:
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>0
до дефинираното од платформата UINT_MAX, обично
4294967295.
xxHash
Додадена е поддршка за xxHash. Имлементирани се следните варијанти:
- xxh32, 32-битна хаш
- xxh64, 64-битна хаш
- xxh3, 64-битна хаш
- xxh128, 128-битна хаш
Почетната состојба на хашот може да се помине преку seed
клучот во options низата, на пример:
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>secret
клучот во options низа, исто така:
<?php
$h = hash("xxh3", $data, options: ["secret" => "at least 136 bytes long secret here"]);
echo $h, "\n";
?>MySQLi
Нова INI директива mysqli.local_infile_directory
На mysqli.local_infile_directory додадена е INI директива, која може да се користи за специфицирање директориум од кој се дозволени да се вчитуваат датотеки. Таа е значајна само ако mysqli.allow_local_infile не е овозможено, бидејќи во тој случај се дозволени сите директориуми.
Поврзување параметри во извршување
Сега е можно да се поврзат параметри со поминување како низа до mysqli_stmt::bind_param(). Сите вредности ќе бидат поврзани како низи. Дозволени се само листи низи. Оваа нова функција не е достапна кога MySQLi е компајлиран со libmysqlclient.
<?php
$stmt = $mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1, $username]);
?>Нов метод Нема начин да се врати друга колона од истиот ред ако ја користите оваа функција за преземање податоци.
Нема начин да се врати друга колона од истиот ред ако ја користите оваа функција за преземање податоци.
е додаден за да овозможи преземање на една скаларна вредност од множеството резултати. Новиот метод прифаќа опционален 0-базиран column
параметар од тип int кој специфицира кој столб да се преземе од.
<?php
$result = $mysqli->query('SELECT username FROM users WHERE id = 123');
echo $result->fetch_column();
?>PDO
На PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY атрибут е додаден, кој може да се користи за специфицирање директориум од кој може да се вчитуваат датотеки. Тоа е значајно само ако PDO::MYSQL_ATTR_LOCAL_INFILE
не е овозможено, бидејќи во тој случај се дозволени сите директориуми.
PDO_SQLite
на SQLite "file:" DSN синтаксата сега е поддржана, што овозможува специфицирање дополнителни знаменца. Оваа функција не е достапна ако е поставено open_basedir.
<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>POSIX
Додадено POSIX_RLIMIT_KQUEUES and POSIX_RLIMIT_NPTS. Овие rlimits се достапни само на FreeBSD.
Стандардно
fputcsv() сега прифаќа нов
eol аргумент кој овозможува дефинирање на сопствена секвенца за крај на редот, стандардната останува иста и е "\n".
SPL
SplFileObject::fgetcsv() сега прифаќа нов
eol аргумент кој овозможува дефинирање на сопствена секвенца за крај на редот, стандардната останува иста и е "\n".