Нови одлики
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Нови одлики
Референца за `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()
константа, а новите