Trong bài hôm nay mình sẽ giới thiệu với các bạn về những đặc điểm mới trong version mới của PHP, nếu bạn để ý sẽ thấy nó có rất nhiều cái hay và tiện dụng
#Constant scalar expressions
Constant scalar expressions có nghĩa là cho phép bạn thực hiện một biểu thức ở bất kỳ nơi nào, giờ đây bạn muốn thực hiện một biểu thức tại hằng số (constant) hoặc khởi tạo tham số cho function hay một kiểu khác trở nên dễ dàng hơn.
<?php const SO_A = 2; const SO_B = SO_A * 2 + 1; const SO_C = SO_B * 2; class Operator { public function outNumber($number = SO_A * SO_C) { $result = ""; for ($i = 1; $i < $number / SO_A; $i++) { $result.= "Từ ".$i." đến 10 <br/>"; } return $result; } } echo (new Operator)->outNumber();
#Variadic functions via …
Trước kia bạn muốn lấy những tham số truyền vào cho một hàm một cách ngẫu nhiên thì bạn phải sử dụng 2 functions: func_get_arg, func_num_args. Nhưng với PHP 5.6x thì bạn có thể thực hiện nó một cách ngắn gọn hơn đó là dùng “…” thêm ba chấm vào trước $var mà bạn khởi tạo ở function.
<?php function getNumber(...$numbers) { $total = 0; foreach ($numbers as $number) { $total += $number; } return $total; } getNumber(1,2,3,4,5,6,7,8,9)
#The way new define array with []
Đây là cách khai báo một mảng mới từ phiên bản PHP 5.4x trở lên, nó giúp bạn khai báo một mảng ngắn gọn hơn nhiều so với trước đây
<?php // before $author = array('Demon Warlock', 'Võ Minh Mẫn', 'Clackken Smith', 'Mr. Nav'); // now $author = ['Demon Warlock', 'Võ Minh Mẫn', 'Clackken Smith', 'Mr. Nav'];
#Argument unpacking via …
Điều này cho phép bạn tách rời các phần tử có trong một mảng để chuyển thành tham số cho một hàm để sử dụng chúng. Ví dụ ta có 2 phần từ trong mảng $numbers là 2 và 3 khi ta sử dụng …$numbers chúng ta sẽ có hai tham số $b = 2 và $c = 3.
<?php function totalNumber($a, $b, $c) { return $a + $b + $c; } $numbers = [2, 3]; echo totalNumber(5, ...$numbers);
#Exponentiation via **
Trước đây khi tính luỹ thừa của một số, bạn thường dùng hàm pow(2,3) tham số thứ 1 là số nguyên và tham số thứ 2 là số mũ thì giờ mình có cách viết ngắn gọn hơn nữa đó là dùng “**”
<?php printf("2 ** 3 == %d", 2 ** 3);
#Namespace – use function and use const
Namespace? nó là gì thì có thể một số bạn newbie sẽ chưa biết nó là gì thì có thể xem ở đây. Phiên bản mới này đã cập nhật thêm 2 tính năng mới cho Namespace đó là dùng một hàm hoặc một hằng số trong một Namespace khác mà không cần phải khởi tạo nó.
<?php // file namespace_one.php namespace IzwebzApp; class IzwebzApp { const IZWEBZ_APP = "Izwebz.com"; public function izwebz() { echo "Izwebz - Học thiết kế web theo chuẩn"; } } // file namespace_two.php require_once('namespace_once.php'); use const IzwebzAppIzwebzAppIZWEBZ_APP; use function IzwebzAppIzwebzAppizwebz; echo IZWEBZ_APP; izwebz();
#New function hash_equals()
Nó giúp bạn so sánh hai chuỗi được mã hoá bởi hàm crypt(), PHP support họ khuyên rằng bạn nên sử dụng nó để giảm thiểu sự tấn công từ bên ngoài vào để đánh cắp CSDL của bạn.
<?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)); // true var_dump(hash_equals($expected, $incorrect)); // false