Mục sở thị 6 tính năng mới trong PHP 7

11:11 12-05-2018BKAP Media

PHP 7 chính thức ra mắt vào tháng 12 năm 2015, nhanh chóng trở thành một phiên bản nâng cấp hoàn hảo với hàng loạt tính năng mới.

1. PHP 7 cho tốc độ nhanh gấp 2 lần PHP 5

Đột phá lớn nhất của PHP 7 chính là hiệu suất đáng kinh ngạc mà nó tăng lên cho các ứng dụng. Tốc độ trong PHP 7 nhanh hơn gấp PHP 5 ít nhất 2 lần, thậm chí lên đến 3-4 lần nếu biết tối ưu và mức tiêu thụ bộ nhớ giảm đi một nửa. Đây là hiệu quả của việc đưa vào sử dụng engine Zend, một engine có cấu trúc dữ liệu nhỏ gọn, phân chia dữ liệu và giải phóng bộ nhớ một cách hợp lý nhất.

Chúng ta có thể thấy được rằng so với phiên bản chạy ổn định gần nhất PHP 5.6 thì với hầu hết các ứng dụng như Magento 1.9, Drupal 7, 8, wordpress 2.6, 4.1, thì PHP 7 đều vượt trội về tốc độ xử lý số request trong 1 đơn vị thời gian.

2. Khai báo chính xác kiểu dữ liệu

Khai báo kiểu vô hướng hướng đến hai kiểu khai báo là coercive (default) and strict. PHP 7 cho phép các lập trình viên nâng cao chất lượng code của họ bằng cách tự định nghĩa kiểu dữ liệu trả về. Khi mà không hiểu hết được những hàm có sẵn thì PHP hỗ trợ tính năng khai báo kiểu trả về của một function. PHP 7 giới thiệu 4 kiểu khai báo mới cho các kiểu vô hướng int, float, string, bool. Những kiểu vô hướng này cho phép lập trình viên trả về các giá trị họ đang mong đợi là int, float, string, bool. Ngoài ra PHP 7 còn hỗ trợ thêm cho phép lập trình viên trả về giá trị kiểu tham số. Ví dụ:

Để có thể sử dụng kiểu strict, bắt buộc lập trình viên phải khai báo declare() trên đầu file. Điều này có nghĩa là khai báo này chỉ có tác dụng cấu hình trên file đó. Khai báo này không những ảnh hưởng đến các loại tham số mà còn cả những kiểu trả về của chức năng. Nó có ý nghĩa tương đương với đệ quy. Khi khai báo kiểu dữ liệu này nếu có bất kì type-check mà xảy ra lỗi thì Exception sẽ bắn ra tương ứng:

3. Toán tử mới

Spaceship Operator

PHP 7 cung cấp thêm một số toán tử mới, đầu tiên đó là spaceship operator (< = >), trông nó giống cái tàu con thoi nên họ đặt tên thế. Đây là toán tử so sánh 2 giá trị, để hiểu rõ hơn mời bạn xem ví dụ sau đây:

Toán tử này viết bắt đầu bắng dấu nhở hơn, tiếp là dấu bằng và dấu lớn hơn (<=>), toán tử sẽ kiểm tra nếu 2 giá trị bằng nhau nó sẽ trả về 0, nếu giá trị bên trái nhỏ hơn giá trị bên phải, trả về -1, còn giá trị bên trái lớn hơn bên phải nó sẽ trả về 1.

Null Coalesce Operator

Một toán tử mới khác đó là Null Coalesce, rất hữu ích khi bạn muốn kiểm tra một giá trị có phải là NULL hay không, toán tử này sẽ trả về giá trị bên trái nếu nó không phải NULL, ngược lại nó sẽ trả về bên phải, cách viết toán tử này đó là 2 dấu hỏi chấm ??

Ở ví dụ trên, biến $name sẽ nhận giá trị của biến $firstName nếu nó không NULL, ngược lại biến $name sẽ nhận giá trị “Guest”.

4. Bổ sung thêm các class ẩn danh

PHP 7 cho phép bạn sử dụng các class ẩn 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.

5. Dùng use khai báo namespace

PHP 7 cho phép nhóm nhiều các namespace của các class cha đồng vị. Điều này có nghĩa là tránh được sự rườm rà khi cần khai báo quá nhiều các class cha đồng vị bằng nhiều dòng.

6. Quản lý lỗi và ngoại lệ dễ dàng hơn

Phải công nhận rằng, việc kiểm soát và có khả năng bắt các fatal error chưa bao giờ là công việc dễ dàng đối với hầu hết các lập trình viên PHP. Engine Exceptions mới sẽ cho phép các lập trình viên thay thế những loại lỗi này với các ngoại lệ (exception). Nếu ngoại lệ không bắt được thì PHP sẽ tiếp tục trả về các fatal error giống như các phiên bản PHP 5.X hiện hành.

Các đối tượng \EngineException mới không mở rộng \Exception Base Class. Điều này đảm bảo khả năng tương thích ngược và các kết quả từ hai kiểu exception khác nhau trong việc quản lý lỗi: truyền thống và engine exceptions.

Để cho phép các lập trình viên có thể bắt được cả hai, PHP 7 giới thiệu một Parent Class mới dưới cái tên là \BaseException.

 

   0968276996
< wire:id="MqItwHyIbuBQeTTzagBm" wire:initial-data="{"fingerprint":{"id":"MqItwHyIbuBQeTTzagBm","name":"embedded.footer","locale":"vn"},"effects":{"listeners":[]},"serverMemo":{"children":[],"errors":[],"htmlHash":"26380eb1","data":[],"dataMeta":[],"checksum":"4962a90067876f7508d75d0e57c4741d2b00025415592b70b254fb796f893fac"}}"!-- Messenger Plugin chat Code -->