Note: "omitted" = "removed":
<?php
declare(strict_types=1);
interface ITest
{
public function run(array $input);
}
class Test implements ITest
{
public function run($input) {
return $input;
}
}
echo (new Test())->run('foo'); // display foo, no error
?>Нови одлики
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Нови одлики
Референца за `migration72.new-features.php` со подобрена типографија и навигација.
Нови одлики
Нов тип на објект
Нов тип, object, е воведен што може да се користи за (контраваријантно) параметарско пишување и (коваријантно) враќање на било кои објекти.
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new stdClass());Вчитување на екстензија по име
Споделените екстензии веќе не бараат нивната екстензија на датотеката (.so за Unix или .dll for Windows) to be specified. This is enabled in the php.ini file, as well as in the
dl() function.
Препишување на апстрактни методи
Апстрактните методи сега можат да се препишат кога една апстрактна класа наследува друга апстрактна класа.
<?php
abstract class A
{
abstract function test(string $s);
}
abstract class B extends A
{
// overridden - still maintaining contravariance for parameters and covariance for return
abstract function test($s) : int;
}Натриум сега е основна екстензија
Современата Sodium криптографска библиотека сега стана основна екстензија во PHP.
За целосен референтен приказ на функциите, видете го Натриум chapter.
Хеширање на лозинка со Argon2
Argon2 е додаден во API за хеширање на лозинки, каде што се изложени следните константи:
Проширени типови на низи за PDO
Типот на низа на PDO е проширен за да ја поддржи националната типска карактер кога се емулираат подготовки. Ова е направено со следните константи:
Овие константи се користат со бинарни OR' нив со
PDO::PARAM_STR:
<?php
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);Дополнителни информации за отстранување грешки при емулирани подготовки за PDO
На Ова ќе ги исфрли само параметрите во изјавата во моментот на исфрлање. Дополнителните параметри не се складираат во изјавата и не се прикажуваат. методот е ажуриран за да го вклучи SQL што се испраќа до базата на податоци, каде што ќе се прикаже целосната, суровата команда (вклучувајќи ги заменетите загради со нивните поврзани вредности). Ова е додадено за да помогне во отстранувањето грешки при емулирани подготовки (и затоа ќе биде достапно само кога се вклучени емулирани подготовки).
Поддршка за проширени операции во LDAP
Поддршката за EXOP е додадена во LDAP екстензијата. Ова е направено со изложување на следните функции и константи:
Дополнувања на информации за адреса на Приклучоци extension
Екстензијата за сокети сега има можност да бара информации за адреса, како и да се поврзе со неа, да се врзе за неа и да ја објасни. За ова се додадени следните четири функции:
Проширување на типот на параметрите
Типовите на параметрите од препишаните методи и од имплементациите на интерфејсот сега може да се изостават. Ова е сè уште во согласност со LSP, бидејќи типовите на параметрите се контраваријантни.
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // type omitted for $input
}Дозволи запирка на крајот за групирани простори на имиња
Запирка на крајот сега може да се додаде во синтаксијата group-use воведена во PHP 7.0.
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};proc_nice() поддршка на Windows
На proc_nice() функцијата сега е поддржана на Windows.
pack() and unpack() поддршка за ендијан
На pack() and unpack() функциите сега поддржуваат float и double и во little и во big endian.
Подобрувања на EXIF extension
Екстензијата EXIF е ажурирана за да поддржува многу поголем опсег на формати. Ова значи дека нивните специфични ознаки за формати сега се правилно преведени при парсирање слики со exif_read_data() функција. Сега се поддржани следните нови формати:
- Samsung
- DJI
- Panasonic
- Sony
- Pentax
- Minolta
- Sigma/Foveon
- AGFA
- Kyocera
- Ricoh
- Epson
EXIF функциите exif_read_data() and exif_thumbnail() сега поддржуваат поминување на стримови како прв аргумент.
Нови функции во PCRE
-
На
Jмодификаторот за поставување PCRE_DUPNAMES е додаден.
SQLite3 овозможува запишување BLOBs
SQLite3::openBlob() сега овозможува отворање BLOB полиња во режим на запишување; претходно беше поддржан само режим на читање.
Oracle OCI8 Проѕирни враќања за откажување на апликации
Поддршка за Oracle Database Transparent Application Failover (TAF) враќања е додадено. TAF им овозможува на PHP OCI8 апликациите автоматски да се поврзат со претходно конфигурирана база на податоци кога врската е прекината. Новата поддршка за TAF враќања им овозможува на PHP апликациите да го следат и контролираат повторното поврзување за време на откажување.
Подобрувања на ZIP extension
Додадена е поддршка за читање и запишување за шифрирани архиви (потребно е libzip 1.2.0).
На ZipArchive класата сега ја имплементира luk4z_7 at hotmail dot com interface.
На zip:// стримот сега прифаќа 'password' опција за контекст.
Белешки од корисници 2 забелешки
Note: you cant change parameter type for abstract method defined in interface.
<?php
abstract class AbstractAssocArray imlements ArrayAccess
{
abstract public function offsetSet($offset, $value): void;
...
}
abstract class AbstractAssocArray2 extends AbstractAssocArray
{
abstract public function offsetSet(string $offset, $value): void;
}
class AssocArray extends AbstractAssocArray2
{
public function offsetSet(string $offset, $value): void
{
$this->{$offset} = $value;
}
}
?>
It's throw fatal error: Declaration of AbstractAssocArray::offsetSet(string $offset, $value): void must be compatible with AbstractAssocArrayAccess::offsetSet($offset, $value).