������������ ������ģʽ: ǿ�� (Ĭ��) �� �ϸ�ģʽ�� ���ڿ���ʹ���������Ͳ�����������ǿ��ģʽ�����ϸ�ģʽ���� �ַ���(string), ���� (int), ������ (float), �Լ�����ֵ (bool)������������PHP5��������������ͣ��������ӿڣ������� �ص�������
<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
return array_sum($ints);
}
var_dump(sumOfInts(2, '3', 4.1));
�������̻������
int(9)
Ҫʹ���ϸ�ģʽ��һ�� declare ����ָ���������ļ��Ķ���������ζ���ϸ����������ǻ����ļ�����ġ� ���ָ���Ӱ�����������������ҲӰ�쵽�����ķ���ֵ�������μ� ����ֵ��������, ���õ�PHP�����Լ���չ�м��ص�PHP������
�����ı������������ĵ���ʾ���μ����������½ڡ�
PHP 7 �����˶���������������֧�֡� ��������������������������������ָ���˺�������ֵ�����͡����õ���������������п��õ�������ͬ��
<?php
function arraysSum(array ...$arrays): array
{
return array_map(function(array $array): int {
return array_sum($array);
}, $arrays);
}
print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
�������̻������
Array ( [0] => 6 [1] => 15 [2] => 24 )
�����ı������������ĵ���ʾ���ɲμ� ����ֵ��������.
�����ճ�ʹ���д��ڴ���ͬʱʹ����Ԫ���ʽ�� isset()�������
���������null�ϲ������ (??) �����ǡ��������������ֵ��ΪNULL
��
���ͻ᷵�������ֵ���������ĵڶ�����������
<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalesces can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>
̫�մ����������ڱȽ��������ʽ����$aС�ڡ����ڻ����$bʱ���ֱ�-1��0��1�� �Ƚϵ�ԭ�������� PHP ������ȽϹ������еġ�
<?php
// ����
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// ������
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// �ַ���
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
Array ���͵ij������ڿ���ͨ�� define() �����塣�� PHP5.6 �н���ͨ�� const ���塣
<?php
define('ANIMALS', [
'dog',
'cat',
'bird'
]);
echo ANIMALS[1]; // ��� "cat"
?>
����֧��ͨ��new class ��ʵ����һ�������࣬������������һЩ"�ú�"�������ඨ�塣
<?php
interface Logger {
public function log(string $msg);
}
class Application {
private $logger;
public function getLogger(): Logger {
return $this->logger;
}
public function setLogger(Logger $logger) {
$this->logger = $logger;
}
}
$app = new Application;
$app->setLogger(new class implements Logger {
public function log(string $msg) {
echo $msg;
}
});
var_dump($app->getLogger());
?>
�������̻������
object(class@anonymous)#2 (0) { }
��ϸ�ĵ����Բο� ������.
�����һ����16������ʽ�� Unicode codepoint������ӡ��һ��˫���Ż�heredoc��Χ�� UTF-8 �����ʽ���ַ����� ���Խ����κ���Ч�� codepoint�����ҿ�ͷ�� 0 �ǿ���ʡ�Եġ�
echo "\u{aa}";
echo "\u{0000aa}";
echo "\u{9999}";
�������̻������
a a (same as before but with optional leading 0's) ��
Closure::call() �������Ÿ��õ����ܣ���̸�������ʱ��һ�������������ϱհ�����������
<?php
class A {private $x = 1;}
// PHP 7 ֮ǰ�汾�Ĵ���
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, 'A'); // �м��հ�
echo $getX();
// PHP 7+ �����߰汾�Ĵ���
$getX = function() {return $this->x;};
echo $getX->call(new A);
�������̻������
1 1
�������ּ���ṩ����ȫ�ķ�ʽ������ɿ������ݡ���ͨ���������ķ�ʽ����ֹDZ�ڵĴ���ע�롣
<?php
// �����еĶ���ת��Ϊ __PHP_Incomplete_Class ����
$data = unserialize($foo, ["allowed_classes" => false]);
// ���� MyClass �� MyClass2 ֮������ж���ת��Ϊ __PHP_Incomplete_Class ����
$data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]);
// Ĭ����������е���ǿɽ��ܵģ���ͬ��ʡ�Եڶ�������
$data = unserialize($foo, ["allowed_classes" => true]);
�����ӵ� IntlChar ��ּ�ڱ�¶������� ICU ���ܡ����������������ྲ̬�������ڲ������ַ����� unicode �ַ���
<?php
printf('%x', IntlChar::CODEPOINT_MAX);
echo IntlChar::charName('@');
var_dump(IntlChar::ispunct('!'));
�������̻������
10ffff COMMERCIAL AT bool(true)
��Ҫʹ�ô��࣬���Ȱ�װIntl��չ
Ԥ���������ò���ǿ֮ǰ�� assert() �ķ����� ��ʹ�����������������ö���Ϊ��ɱ��������ṩ������ʧ��ʱ�׳��ض��쳣��������
�ϰ汾��API���ڼ���Ŀ�Ľ�������ά����assert()������һ�����Խṹ���������һ��������һ�����ʽ������������һ��������� string��һ�������Ե�boolean��
<?php
ini_set('assert.exception', 1);
class CustomError extends AssertionError {}
assert(false, new CustomError('Some error message'));
?>
�������̻������
Fatal error: Uncaught CustomError: Some error message
����������Ե�����˵������������ڿ�����������������������������assert()�� expectations section�½��ҵ���
��ͬһ namespace ������ࡢ�����ͳ������ڿ���ͨ������ use ��� һ���Ե����ˡ�
<?php
// PHP 7 ֮ǰ�Ĵ���
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;
use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;
// PHP 7+ �����߰汾�Ĵ���
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};
?>
�����Ի��� PHP 5.5 �汾����������������Թ����ġ� ��������������������ͨ��ʹ�� return �������һ�����ʽ �����Dz�����������ֵ���� ����ͨ������ Generator::getReturn() ��������ȡ�������ķ���ֵ�� �����������ֻ������������ɲ��������Ժ����һ�Ρ�
<?php
$gen = (function() {
yield 1;
yield 2;
return 3;
})();
foreach ($gen as $val) {
echo $val, PHP_EOL;
}
echo $gen->getReturn(), PHP_EOL;
�������̻������
1 2 3
�����������ܹ��������յ�ֵ��һ���dz����������ԣ� ��Ϊ��ʹ�õ����������Ŀͻ��˴������ֱ�ӵõ�����������������Эͬ���㣩�ķ���ֵ�� �����֮ǰ�汾�пͻ��˴�������ȼ���������Ƿ���������յ�ֵȻ���ٽ�����Ӧ���� ���÷�����ˡ�
���ڣ�ֻ�����������������ʹ�� yield from�� �Ϳ���һ���������Զ�ί�ɸ��������������� Traversable ������� array��
<?php
function gen()
{
yield 1;
yield 2;
yield from gen2();
}
function gen2()
{
yield 3;
yield 4;
}
foreach (gen() as $val)
{
echo $val, PHP_EOL;
}
?>
�������̻������
1 2 3 4
�¼ӵĺ��� intdiv() �������� �����ij������㡣
<?php
var_dump(intdiv(10, 3));
?>
�������̻������
int(3)
session_start() ���Խ���һ�� array ��Ϊ������ �������� php.ini �ļ������õ� �Ự����ѡ����
�ڵ��� session_start() ��ʱ�� �����ѡ�������Ҳ֧�� session.lazy_write ��Ϊ�� Ĭ�����������������Ǵġ����������ǿ��� PHP ֻ���ڻỰ�е����ݷ����仯��ʱ��� д��Ự�洢�ļ�������Ự�е�����û�з����ı䣬��ô PHP ���ڶ�ȡ��Ự����֮�� �����رջỰ�洢�ļ��������κ��ģ�����ͨ������ read_and_close ��ʵ�֡�
���磬���д������� session.cache_limiter Ϊ private�������ڶ�ȡ��ϻỰ����֮�����ϹرջỰ�洢�ļ���
<?php
session_start([
'cache_limiter' => 'private',
'read_and_close' => true,
]);
?>
�� PHP 7 ֮ǰ����ʹ�� preg_replace_callback() ������ʱ�� �������ÿ��������ʽ��Ҫִ�лص����������ܵ��¹���ķ�֧���롣 ��ʹ���¼ӵ� preg_replace_callback_array() ������ ����ʹ�ô�����Ӽ�ࡣ
���ڣ�����ʹ��һ��������������ÿ��������ʽע��ص������� ������ʽ������Ϊ��������ļ��� ����Ӧ�Ļص��������ǹ��������ֵ��
�¼���������ƽ̨�ĺ����� random_bytes() �� random_int() ���������߰�ȫ���������ַ��������������
��֮ǰ�汾�У�list() �������ܱ�֤ ��ȷ��չ��ʵ���� ArrayAccess �ӿڵĶ��� ������������Ѿ�������