Tin vui cho những tín đồ PHP rằng
PHP 5.5.0 chính thức được phát hành, nó mang tới một loạt các tính năng mới cũng như cải thiện một số kỹ thuật. 10 cải tiến mà các nhà phát triển web quan tâm sẽ tìm thấy ở phiên bản mới này.
Một sự khác biệt cần lưu ý trước khi nâng cấp phiên bản, đó là windows XP và 2003 sẽ không hỗ trợ PHP 5.5.0
#1 Sinh mã tự động có sẵn
Bộ sinh mã cung cấp cách đơn giản nhất tránh lặp lại dữ liệu mà không cần phải viết lớp thực thi giao diện
Giống như bất kỳ chức năng khác của sinh mã được định nghĩa với từ khóa chức năng, không giống như chức năng bình thường, nó chỉ trả về kết quả một lần, sinh mã có thể gửi nhiều kết quả trả về, bằng cách sử dụng từ khóa yield.
Ví dụ đơn giản sử dụng chức năng sinh mã chuỗi số nguyên như bên dưới:
function xrange($start, $end, $step = 1) {
for ($i = $start; $i <= $end; $i += $step) {
yield $i;
}
}
igit odd numbers: ';
echo 'Single
dforeach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
ho "\n";
e
c
Kết quả sẽ in ra là "Single digit odd numbers: 1,3,5,7,9"
Sinh mã cho phép lặp lại dữ liệu khi sử dụng vòng lặp foreach không cần xây dựng mảng bên trong bộ nhớ. Không cần phải
tạo ra mảng giúp giảm sử dụng bộ nhớ và thời gian xử lý.
Ví dụ, sử dụng chức năng range() của sinh mã để tạo ra chuỗi liên tục giữa 1 và 1 tỷ bằng cách gọi range(0,1000000) bên trong vòng lặp foreach sẽ tạo ra mảng với kích thước hơn 100MB, theo hướng dẫn của PHP. Trong khi đó tạo ra 1 chuỗi sử dụng chức năng sinh mã sẽ không đến 1KB.
#2 Thêm từ khóa Finally
Giống như các ngôn ngữ bật cao khác, PHP cho phép bọc đoạn code trong khối try{} catch{}. Bất kỳ ngoại lệ nào xảy ra sẽ được bắt để xử lý
Từ khóa finally cho phép xác định đoạn mã, đặt phía sau khối catch, nó sẽ luôn luôn thực thi sau khối try{} catch{}, bất kể ngoại lệ nào xảy ra.
Ví dụ:
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
return 1/$x;
}
try {
echo inverse(5) . "\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
} finally {
echo "First finally.\n";
}
#3 New Password hashing API
New Password hasing API cho phép sử dụng dòng mã để tạo ra mật khẩu bằng mã băm sử dụng
bcrype. Ví dụ
$hash = password_hash($password, PASSWORD_DEFAULT);
password_hash() cần 2 đối số ở đây, đầu tiên mật khẩu là kiểu chuỗi và sau đó là hằng số thiết lập thuật toán mã hóa để sử dụng.
Password sẽ tự động nhúng và có thể xác nhận bằng cách sử dụng đoạn mã dưới đây
password_verify($password, $hash)
Thuật toán mã hóa mặc định được sử dụng là bcrypt, sẽ thay đổi và lưu trữ thuật toán mới vào PHP
Khuyến khích nên lưu trữ kết quả vào trong cơ sở dữ liệu nếu kết quả quá 60 ký tự
#4 Mảng và chuỗi chữ
Cả mảng và chuỗi chữ có thể truy cập vào vùng nhớ mà con trỏ trỏ tới trực tiếp tới phần tử và ký tự
Ví dụ:
echo 'Array dereferencing:';
echo [4,5,6][0];
"\n";
echo
Chọn phần tử đầu tiên trong mảng in ra "array dereferencing: 4"
echo 'String dereferencing:';
echo 'HELLO'[0];
"\n";
echo
Chọn phần tử đầu tiên trong chuỗi in ra "String dereferencing: H"
#5 Giải pháp đơn giản cho tên lớp
Từ khóa
Class bây giờ có thể được sử dụng để lấy tên đầy đủ của class bao gồm
namespace nằm bên trong
Ví dụ:
namespace NS {
class ClassName {
}
ho ClassName::class;
e
c
}
Sẽ in ra tên của class và namespace, kết quả là: "NS\ClassName"
#6 Truy cập biểu thức hàm Empty()
Hàm Empty(), được sử dụng để xác định biến có rỗng hay không hoặc là có giá trị false không, bây giờ có thể thông qua một biểu thức và xác định giá trị trả về có rỗng hay không.
Ví dụ
function send_false() {
return false;
}
if (empty(send_false())) {
echo "False value returned.\n";
}
if (empty(true)) {
echo "True.\n";
}
Kết quả: "False value returned"
#7 Hỗ trợ tối ưu hóa Zend và thêm bộ nhớ đệm
Tối ưu hóa Zend và bộ nhớ đệm đã được thêm vào PHP như
OPcache mở rộng.
OPcache cải thiện hiệu suất của các scripts bằng cách loại bỏ cần thiết để PHP load và phân tích cú pháp scripts mỗi khi yêu cầu được thực hiện.
Để làm được điều này, nó lưu trữ script bytecode trong bộ nhớ dùng chung
#8 Vòng lặp Foreach hỗ trợ construct list()
Giá trị bên trong mảng lồng nhau có thể chỉ định đến biến bằng cách sử dụng vòng lặp foreach() và construct list()
List() có thể sử dụng dễ dàng chỉ định giá trị thực hiện từ bên trong mảng, giống như:
$animals = array('dog', 'fox');
// Listing all the variables
list($animal1, $animal2) = $animals;
echo "The quick $animal1 jumped over the lazy $animal2\n";
Kết quả: "The quick fox jumped over the lazy dog"
Hàm list() sử dụng vòng lặp để chỉ định giá trị bên trong mảng lồng nhau, ví dụ:
$array = [
[10, 20],
[30, 40],
];
foreach ($array as list($a, $b)) {
echo "First: $a; Second: $b\n";
}
Kết quả:
First: 10, Second: 20
First: 30, Second: 40
#9 Cải tiến mới được thêm vào thư viện GD
GD mở rộng của PHP tạo và thao tác nhiều hình ảnh có nhiều khả năng mới.
Hỗ trợ lật bằng cách sử dụng chức năng
imageflip(), hỗ trợ cắt tiên tiến bằng cách sử dụng chức năng
imagecrop() và imagecroupauto(), WebP đọc và viết hỗ trợ dùng hàm imagecreatefromwebp() và imagewebp().
#10 Vòng lặp foreach hỗ trợ khóa không vô hướng
Khi lặp đi lặp lại mảng sử dụng vòng lặp foreach, các khóa element có thể có giá trị không vô hướng, đó là giá trị khác so với kiểu int hoặc string.