�����Լ�����ֵ���������ڿ���ͨ��������ǰ����һ���ʺ�ʹ֮����Ϊ�ա� �������������ʱ������IJ������ߺ������صĽ��Ҫô�Ǹ��������ͣ�Ҫô�� null ��
<?php
function testReturn(): ?string
{
return 'elePHPant';
}
var_dump(testReturn());
function testReturn(): ?string
{
return null;
}
var_dump(testReturn());
function test(?string $name)
{
var_dump($name);
}
test('elePHPant');
test(null);
test();
�������̻������
string(10) "elePHPant" NULL string(10) "elePHPant" NULL Uncaught Error: Too few arguments to function test(), 0 passed in...
һ���µķ���ֵ����void�����롣
����ֵ����Ϊ void ���͵ķ���Ҫô�ɴ�ʡȥ return ��䣬Ҫôʹ��һ���յ� return ��䡣
���� void ������˵��NULL
����һ���Ϸ��ķ���ֵ��
<?php
function swap(&$left, &$right) : void
{
if ($left === $right) {
return;
}
$tmp = $left;
$left = $right;
$right = $tmp;
}
$a = 1;
$b = 2;
var_dump(swap($a, $b), $a, $b);
�������̻������
null int(2) int(1)
��ͼȥ��ȡһ�� void �����ķ���ֵ��õ� NULL
�����Ҳ�������κξ��档��ô����ԭ���Dz���Ӱ����߲�εķ�����
���������[]��������Ϊlist()���һ����ѡ��������ڽ������ֵ����һЩ������������foreach�У���
<?php
$data = [
[1, 'Tom'],
[2, 'Fred'],
];
// list() style
list($id1, $name1) = $data[0];
// [] style
[$id1, $name1] = $data[0];
// list() style
foreach ($data as list($id, $name)) {
// logic here with $id and $name
}
// [] style
foreach ($data as [$id, $name]) {
// logic here with $id and $name
}
������֧�������ೣ���Ŀɼ��ԡ�
<?php
class ConstDemo
{
const PUBLIC_CONST_A = 1;
public const PUBLIC_CONST_B = 2;
protected const PROTECTED_CONST = 3;
private const PRIVATE_CONST = 4;
}
����������һ���µı���Ϊiterable��α�� (��callable����)�� ����Ա����ڲ������߷���ֵ�����У�����������������ʵ����Traversable�ӿڵĶ��� �������࣬����������ʱ����������ս������iterable���͵�array ��һ��ʵ����Traversable�Ķ����ڷ���ֵ����������ؿ���� array�����ֵ���͵�iterable��
<?php
function iterator(iterable $iter)
{
foreach ($iter as $val) {
//
}
}
һ��catch�������ڿ���ͨ���ܵ��ַ�(|)��ʵ�ֶ���쳣�IJ��� �������Ҫͬʱ�������Բ�ͬ��IJ�ͬ�쳣ʱ�����á�
<?php
try {
// some code
} catch (FirstException | SecondException $e) {
// handle first and second exceptions
}
����list()�������µ�[]�֧�������ڲ�ȥָ������������ζ�������Խ��������͵����� ����ֵ��һЩ�����������������ƣ�
<?php
$data = [
["id" => 1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
// list() style
list("id" => $id1, "name" => $name1) = $data[0];
// [] style
["id" => $id1, "name" => $name1] = $data[0];
// list() style
foreach ($data as list("id" => $id, "name" => $name)) {
// logic here with $id and $name
}
// [] style
foreach ($data as ["id" => $id, "name" => $name]) {
// logic here with $id and $name
}
��������֧��ƫ�������ַ����������� ��֧�ֽ��ܸ�����Ϊƫ����������ͨ��[]��{}�����ַ����±�������������£�һ��������ƫ�����ᱻ���Ϊһ�����ַ�����β��ʼ��ƫ������
<?php
var_dump("abcdef"[-2]);
var_dump(strpos("aabbcc", "b", -3));
�������̻������
string (1) "e" int(3)
Negative string and array offsets are now also supported in the simple variable parsing syntax inside of strings.
<?php
$string = 'bar';
echo "The last character of '$string' is '$string[-1]'.\n";
?>
�������̻������
The last character of 'bar' is 'r'.
ͨ����openssl_encrypt()��openssl_decrypt() ��Ӷ������������֧����AEAD (ģʽ GCM and CCM)��
Closure������һ����̬���������ڽ�callable���ٵ� תΪһ��Closure ����
<?php
class Test
{
public function exposeFunction()
{
return Closure::fromCallable([$this, 'privateFunction']);
}
private function privateFunction($param)
{
var_dump($param);
}
}
$privFunc = (new Test)->exposeFunction();
$privFunc('some value');
�������̻������
string(10) "some value"
һ���µ���Ϊ pcntl_async_signals() �ķ������ڱ����룬 ������������ ticks ���������ܶ����Ŀ��������첽�źŴ���
<?php
pcntl_async_signals(true); // turn on async signals
pcntl_signal(SIGHUP, function($sig) {
echo "SIGHUP\n";
});
posix_kill(posix_getpid(), SIGHUP);
�������̻������
SIGHUP
�Է��������͵�֧�������Ѿ������뵽 CURL ��չ�У�
��Ҫ�汾 7.46 ����ߣ����������ͨ��
curl_multi_setopt() �������µij���
CURLMOPT_PUSHFUNCTION
�����е��ڡ�����
CURL_PUST_OK
�� CURL_PUSH_DENY
Ҳ�Ѿ�����ӽ������Ա���������͵Ļص������������Լ���ͬ���ܾ�����