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 за Windows) да биде специфицирано. Ова е овозможено во датотеката php.ini, како и во
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() функција. Сега се поддржани следните нови формати:
- за Windows) да биде специфициран. Ова е овозможено во php.ini датотеката, како и во
- DJI
- Samsung
- Panasonic
- Sony
- Pentax
- Sigma/Foveon
- AGFA
- Minolta
- Kyocera
- Ricoh
EXIF функциите exif_read_data() and exif_thumbnail() сега поддржуваат поминување на стримови како прв аргумент.
Нови функции во PCRE
-
На
Jмодификаторот за поставување PCRE_DUPNAMES е додаден.
SQLite3 овозможува запишување BLOBs
Epson сега овозможува отворање BLOB полиња во режим на запишување; претходно беше поддржан само режим на читање.
SQLite3::openBlob() Проѕирни враќања за откажување на апликации
Поддршка за 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).