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

Нови одлики

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

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

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

migration56.new-features.php

Нови одлики

Константни изрази

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

<?php
const ONE = 1;
const
TWO = ONE * 2;

class
C {
const
THREE = TWO + 1;
const
ONE_THIRD = ONE / self::THREE;
const
SENTENCE = 'The value of THREE is '.self::THREE;

public function
f($a = ONE + self::THREE) {
return
$a;
}
}

echo (new
C)->f()."\n";
echo
C::SENTENCE;
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

4
The value of THREE is 3

Исто така е можно да се дефинира константа array користејќи го const клучниот збор мора да биде деклариран во најоддалечениот опсег на датотека (глобалниот опсег) или внатре во декларациите на именски простор. Ова е затоа што увозот се врши во време на компајлирање, а не во време на извршување, така што не може да биде во опсег на блок. Следниот пример ќе покаже незаконска употреба на

<?php
const ARR = ['a', 'b'];

echo
ARR[0];
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

a

Варијадични функции преку ...

Варијадични функции сега можат да се имплементираат користејќи го ... оператор, наместо да се потпираат на func_get_args().

<?php
function f($req, $opt = null, ...$params) {
// $params is an array containing the remaining arguments.
printf('$req: %d; $opt: %d; number of params: %d'."\n",
$req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

$req: 1; $opt: 0; number of params: 0
$req: 1; $opt: 2; number of params: 0
$req: 1; $opt: 2; number of params: 1
$req: 1; $opt: 2; number of params: 2
$req: 1; $opt: 2; number of params: 3

Распакување аргументи преку ...

Низи and Траверзабилно објектите можат да се распакуваат во листи со аргументи при повикување функции со користење на ... оператор. Ова е познато и како сплат оператор во други јазици, вклучувајќи го и Ruby.

<?php
function add($a, $b, $c) {
return
$a + $b + $c;
}

$operators = [2, 3];
echo
add(1, ...$operators);
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

6

Експоненцијација преку **

Десно асоцијативен ** оператор е додаден за поддршка на експоненцијација, заедно со **= кратенка оператор за доделување.

<?php
printf
("2 ** 3 == %d\n", 2 ** 3);
printf("2 ** 3 ** 2 == %d\n", 2 ** 3 ** 2);

$a = 2;
$a **= 3;
printf("a == %d\n", $a);
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

2 ** 3 ==      8
2 ** 3 ** 2 == 512
a ==           8

use function and use const

На use оператор е проширен за поддршка на увоз на функции и константи покрај класи. Ова се постигнува преку use function and use const конструкции, соодветно.

<?php
namespace Name\Space {
const
FOO = 42;
function
f() { echo __FUNCTION__."\n"; }
}

namespace {
use const
Name\Space\FOO;
use function
Name\Space\f;

echo
FOO."\n";
f();
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

42
Name\Space\f

phpdbg

PHP сега вклучува интерактивен дебагер наречен phpdbg имплементиран како SAPI модул. За повеќе информации, посетете ја phpdbg документацијата.

Стандардно кодирање на карактери

default_charset сега се користи како стандарден сет на карактери за htmlentities(), html_entity_decode() and htmlspecialchars() функции. Имајте предвид дека ако се поставени (сега застарените) поставки за кодирање iconv и mbstring, тие ќе имаат предност пред default_charset за функциите iconv и mbstring, соодветно.

Стандардната вредност за оваа поставка е UTF-8.

php://input е за еднократна употреба

php://input сега може повторно да се отвори и прочита онолку пати колку што е потребно. Оваа работа, исто така, резултираше со значително намалување на количината на меморија потребна за обработка на POST податоци.

Подигнување големи датотеки

Сега се прифаќаат датотеки поголеми од 2 гигабајти.

GMP поддржува преоптоварување на оператори

GMP објектите сега поддржуваат преоптоварување на оператори и кастинг во скаларни типови. Ова овозможува поизразено кодирање со користење на GMP:

<?php
$a
= gmp_init(42);
$b = gmp_init(17);

if (
version_compare(PHP_VERSION, '5.6', '<')) {
echo
gmp_intval(gmp_add($a, $b)), PHP_EOL;
echo
gmp_intval(gmp_add($a, 17)), PHP_EOL;
echo
gmp_intval(gmp_add(42, $b)), PHP_EOL;
} else {
echo
$a + $b, PHP_EOL;
echo
$a + 17, PHP_EOL;
echo
42 + $b, PHP_EOL;
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

59
59
59

hash_equals() за безбедно споредување на низи од напади со тајминг

На hash_equals() е додадена функција за споредување на две низи во константно време. Ова треба да се користи за ублажување на нападите со тајминг; на пример, при тестирање crypt() хешови на лозинки (под претпоставка дека не можете да користите password_hash() and password_verify(), кои не се подложни на напади со тајминг).

<?php
$expected
= crypt('12345', '$2a$07$usesomesillystringforsalt$');
$correct = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$incorrect = crypt('1234', '$2a$07$usesomesillystringforsalt$');

var_dump(hash_equals($expected, $correct));
var_dump(hash_equals($expected, $incorrect));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

bool(true)
bool(false)

__debugInfo()

На __debugInfo() е додаден магичен метод за да им овозможи на објектите да ги менуваат својствата и вредностите што се прикажуваат кога објектот се прикажува со користење на var_dump().

<?php
class C {
private
$prop;

public function
__construct($val) {
$this->prop = $val;
}

public function
__debugInfo() {
return [
'propSquared' => $this->prop ** 2,
];
}
}

var_dump(new C(42));
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

object(C)#1 (1) {
  ["propSquared"]=>
  int(1764)
}

gost-crypto хеш алгоритми

На gost-crypto е додаден хеш алгоритми. Ова го имплементира GOST хеш функцијата користејќи ги CryptoPro S-box табелите како што е наведено во » RFC 4357, дел 11.2.

SSL/TLS подобрувања

Направени се широк спектар на подобрувања на поддршката за SSL/TLS во PHP 5.6. Овие вклучуваат овозможување на верификација на партнерот по дифолт, поддршка за совпаѓање на отпечатоци од сертификати, ублажување на нападите за повторно преговарање на TLS и многу нови SSL опции за контекст to allow more fine grained control over protocol and verification settings when using encrypted streams.

за да се овозможи пофина контрола врз поставките за протокол и верификација при користење шифрирани стримови. OpenSSL промени во PHP 5.6.x Овие промени се опишани подетално во

pgsql секцијата од овој водич за миграција.

На pgsql асинхрона поддршка PGSQL_CONNECT_ASYNC екстензијата сега поддржува асинхрони конекции и прашања, со што се овозможува неблокирачко однесување при интеракција со базите на податоци на PostgreSQL. Асинхрони конекции може да се воспостават преку pg_connect_poll(), pg_socket(), pg_consume_input() and pg_flush() константа, а новите

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

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

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

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

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

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

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