������

ʹ�ñ��ʽ���峣��

��֮ǰ�� PHP �汾�У� ����ʹ�þ�ֵ̬�����峣�������������Լ�ָ����������Ĭ��ֵ�� ���������ʹ�ð�����ֵ���ַ����������Լ������������ڵ���ֵ���ʽ�� ���峣�������������Լ����ú�������Ĭ��ֵ��

<?php
const ONE 1;
const 
TWO ONE 2;

class 
{
    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;
?>

�������̻������

4
The value of THREE is 3

���ڿ���ͨ�� const �ؼ�������������Ϊ array �ij�����

<?php
const ARR = ['a''b'];

echo 
ARR[0];
?>

�������̻������

a

ʹ�� ... ���������䳤��������

���ڿ��Բ����� func_get_args()�� ʹ�� ... ����� ��ʵ�� �䳤����������

<?php
function f($req$opt null, ...$params) {
    
// $params ��һ��������ʣ�����������
    
printf('$req: %d; $opt: %d; number of params: %d'."\n",
           
$req$optcount($params));
}

f(1);
f(12);
f(123);
f(1234);
f(12345);
?>

�������̻������

$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

ʹ�� ... ��������в���չ��

�ڵ��ú�����ʱ��ʹ�� ... ������� �� ���� �� �ɱ��� ����չ��Ϊ���������� ������������ԣ����� Ruby�У��ⱻ��Ϊ�������������

<?php
function add($a$b$c) {
    return 
$a $b $c;
}

$operators = [23];
echo 
add(1, ...$operators);
?>

�������̻������

6

ʹ�� ** ����������

��������������� ** �����������㡣 ͬʱ��֧�ּ�д�� **= ���������ʾ���������㲢��ֵ��

<?php
printf
("2 ** 3 ==      %d\n"** 3);
printf("2 ** 3 ** 2 == %d\n"** ** 2);

$a 2;
$a **= 3;
printf("a ==           %d\n"$a);
?>

�������̻������

2 ** 3 ==      8
2 ** 3 ** 2 == 512
a ==           8

use function �Լ� use const

use ����� ����������չ��֧�������е����ⲿ�ĺ����ͳ����� ��Ӧ�ĽṹΪ use function �� 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();
}
?>

�������̻������

42
Name\Space\f

phpdbg

PHP �� SAPI ģ����ʵ����һ�� ����ʽ������������ phpdbg��������Ϣ������� » phpdbg �ĵ���

Ĭ���ַ�����

����һЩ�ַ�������صĺ��������� htmlentities()�� html_entity_decode() �Լ� htmlspecialchars() ʹ�� default_charset ��ΪĬ���ַ�������ע�⣬���� iconv�����ѷ����� �� mbstring ��صĺ����� ����ֱ����������ǵı��룬 ��ô��Щ��Ӧ���õ����ȼ����� default_charset��

default_charset ��Ĭ��ֵ�� UTF-8��

php://input �ǿ����õ���

ֻҪ����Ҫ������Զ�δ򿪲���ȡ php://input�� ͬʱ���������ʹ���ڴ��� POST �����ݵ�ʱ�� �������Խ��Ͷ����ڴ����������

���ļ��ϴ�

���ڿ���֧�ִ��� 2GB ���ļ��ϴ���

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($a17)), PHP_EOL;
    echo 
gmp_intval(gmp_add(42$b)), PHP_EOL;
} else {
    echo 
$a $bPHP_EOL;
    echo 
$a 17PHP_EOL;
    echo 
42 $bPHP_EOL;
}
?>

�������̻������

59
59
59

ʹ�� hash_equals() �Ƚ��ַ�������ʱ�򹥻�

���� hash_equals() ������ �Ժ㶨��ʱ�������������ַ����Ƚϣ� �Ա���ʱ�򹥻��� ���統�Ƚ� crypt() ����ɢ��ֵ��ʱ�򣬾Ϳ���ʹ�ô˺����� ���ٶ��㲻��ʹ�� password_hash() �� 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));
?>

�������̻������

bool(true)
bool(false)

__debugInfo()

���� __debugInfo()�� ��ʹ�� var_dump() ��������ʱ�� ������������Ҫ��������Ժ�ֵ��

<?php
class {
    private 
$prop;

    public function 
__construct($val) {
        
$this->prop $val;
    }

    public function 
__debugInfo() {
        return [
            
'propSquared' => $this->prop ** 2,
        ];
    }
}

var_dump(new C(42));
?>

�������̻������

object(C)#1 (1) {
  ["propSquared"]=>
  int(1764)
}

gost-crypto ɢ���㷨

���� gost-crypto ɢ���㷨�� ��ʹ�� » RFC 4357, 11.2 С�� ����� CryptoPro S-box ��ʵ���� GOST ɢ�к�����

SSL/TLS ����

�� PHP 5.6 �ж� SSL/TLS ��֧�ֽ����˴���ȵ������� �����а��� Ĭ�����ö˵���֤ ѡ����֧��֤��ָ�Ʊȶԣ� �Ա��� TLS ����Э�̹����� �������˺ܶ� SSL ������ѡ���� �Ա���ʹ�ü�������ʱ�� �ܹ����õĿ���Э�����֤��������á�

��Щ�䶯�� PHP 5.6.x �е� OpenSSL ��� ������ϸ������

pgsql �첽֧��

pgsql ��չ����֧�� �첽��ʽ�������ݿ⼰ִ�в�ѯ�� Ҳ������ʹ�÷������ķ�ʽ�� PostgreSQL ���ݿ���н����� ʹ�� PGSQL_CONNECT_ASYNC �������� �����첽���ӣ�pg_connect_poll()�� pg_socket()�� pg_consume_input() �� pg_flush() ���� �������������첽���ӺͲ�ѯ��