PHP 7 những điểm mới so với những phiên bản trước


PHP 7 đã ra đời từ năm 2015 chắc cũng không ít người thấy đặc điểm lạ php 5 xong chưa phát hanh php 6 đã lên PHP nhưng thực ra PHP 6 là một phiên bản  khác nhưng do một số lý do phiên bản này không thành công nên nó không được hoàn chỉnh. Chính vì thế để tránh nhầm lẫn phiên bản gần đây phát hành chính thức được gọi là PHP 7.

Vậy trong PHP 7 có điểm gì mới

  1. Hiệu năng

PHP sử dụng engine thông dịch đó là Zend engine một mã nguồn mở được viết bằng C. Các phiên bản PHP 5  sử dụng Zend engine II. Với việc sử dụng  PHP7 sẽ nhận được những cải tiến rất nhiều từ phiên bản engine  3.0, được thiết kế và tái cấu trúc để tăng tốc độ và giảm bộ nhớ. Việc này đồng nghĩa với việc ứng dụng của bạn giảm đáng kể thời gian chạy và tăng trải nghiệm của người dùng. Ngoài ra, PHP 7.0 cũng sử dụng ít bộ nhớ hơn nhờ vào cấu trúc dữ liệu nhỏ gọn, tăng hiệu suất sử dụng bộ nhớ từ 30% – 50%,cho phép bạn phục vụ đồng thời nhiều người dùng hơn mà không cần bổ sung thêm tài nguyên máy chủ.

Ưu điểm dễ nhận biết nhất của PHP 7 là làm tăng hiệu suất từ 50% đến 200% đối với các ứng dụng thực tế mà không cần thay đổi bất kỳ dòng code nào.

2. Những tính năng mới.

PHP 7 có rất nhiều những tính năng mới mẻ được nhà sản xuất đưa ra. Chúng ta cùng điểm qua một vài tính năng mới nổi bật của nó.

  • Toán tử Spaceship – Toán tử so sánh kết hợp

Toán tử Spaceship chạy dưới tên chính thức là Combined Comparison Operator (toán tử so sánh kết hợp). Ký hiệu của toán tử mới trông như thế này: <=> (giống như một con tàu vũ trụ đơn giản, nếu bạn chịu khó tưởng tượng).

Toán tử spaceship này trả về 0 nếu cả hai toán hạng bằng nhau, 1 nếu toán hạng bên trái lớn hơn, và -1 nếu toán hạng bên phải lớn hơn. Nó cũng được gọi là một toán tử so sánh three-way, và đã tồn tại trong những ngôn ngữ lập trình phổ biến khác như Perl và Ruby.
<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo “a” <=> “a”; // 0
echo “a” <=> “b”; // -1
echo “b” <=> “a”; // 1
?>

  • Toán tử Null Coalescing

Toán tử Null Coalescing được thể hiện bằng hai dấu chấm hỏi (??). Bạn sử dụng nó khi muốn kiểm tra liệu 1 cái gì đó có tồn tại hay trả về một giá trị mặc định hay không?

–  Trả về toán hạng đầu tiên nếu nó không null

–  Trả về toán hạng thứ 2 trong các trường hợp khác
<?php

Lnh $username = $_GET[user] ??nobody;
//Stương đương vi :
$username = isset($_GET[user]) ? $_GET[user] :nobody
?>

Cùng một mục đích nhưng toán tử này giảm được thời gian viết code cũng như những khai báo cơ bản trong lập trình

  • Hỗ trợ định nghĩa 1 mảng Constant sử dụng define()

Với PHP 7 chúng ta hoàn toàn có thể định nghĩa 1 mảng constants với từ khóa define(). Với phiên bản 5.6 chúng chỉ được định nghĩ duy nhất bằng cách sử dụng từ khóa const
<?php
define(‘ANIMALS’, [
‘dog’,
‘cat’,
‘bird’
]);

echo ANIMALS[1]; // outputs “cat”
?>

  • Group use declarations – Import từ cùng Namespace dễ dàng hơn

Cú pháp mới cắt giảm mọi sự rườm rà, làm cho mã gọn gàng hơn, dễ nhìn hơn, giúp các lập trình viên tiết kiệm được rất nhiều thời gian gõ code.

Tính năng này cũng giúp cho việc đọc và debug code dễ dàng hơn bởi vì việc khai báo sử dụng nhóm giúp bạn dễ dàng xác định được các import thuộc về cùng một module nào.
<?php
// Pre PHP 7 code
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+ code
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};
?>

  • Session Options

Session_start() với PHP 7 có thể cho phép là 1 mảng những lựa chọn
<?php
session_start([
‘cache_limiter’ => ‘private’,
‘read_and_close’ => true,
]);
?>

  • Chia nguyên với hàm intdiv()

<?php
var_dump(intdiv(10, 3));
?>

output : int(3)

  • Anonymous classes

PHP 7 cho phép bạn sử dụng các class vô danh (anonymous), đây là một đặc trưng đã có trong những ngôn ngữ lập trình hướng đối tượng khác như C# và Java. Một class anonymous là một class không có tên. Đối tượng mà nó khởi tạo có cùng chức năng như một đối tượng của một lớp có tên.

Cú pháp giống như chúng ta sử dụng trong các class PHP truyền thống, chỉ có thiếu cái tên class. Nếu các lớp vô danh (anonymous classes) được sử dụng tốt, chúng có thể làm tăng tốc độ thực thi. Các lớp vô danh là tuyệt vời khi một class chỉ được sử dụng một lần trong suốt quá trình thực thi và trong những trường hợp một class không cần phải được ghi tài liệu.

<?php
// Coercive mode
function sumOfInts(int …$ints)
{
return array_sum($ints);
}

var_dump(sumOfInts(2, ‘3’, 4.1));

?>

  • CSPRNG functions

Đặc điểm của 2 hàm mới này để tạo ra các số nguyên và chuỗi mã hóa an toàn

Cả 2 hàm này sẽ trả về exception Error nếu đầu vào không được tìm thấy.