hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Lập trình PHP cơ bản
Một số cải tiến của PHP version 8

Một số cải tiến của PHP version 8

  • 29-06-2022
  • Toanngo92
  • 0 Comments

PHP 8.0 được phát hành ngày 26 tháng 11 năm 2020. Những thay đổi này làm cho PHP hoạt động dễ dàng hơn và không phức tạp. PHP 8.0 được coi là một bản cập nhật lớn của ngôn ngữ PHP. Nó có nhiều tính năng mới và tối ưu hóa bao gồm:

  • Named arguments
  • Attributes
  • Constructor property promotion
  • Union types
  • Match expression
  • Nullsafe operator
  • Enhanced error handling, and type system
  • Consistency

Mục lục

    • Named Arguments (Đối số được đặt tên)
    • Attributes (thuộc tính)
    • Constructor property promotion (giới thiệu về cách khởi tạo đối tượng)
    • Union types ( kêt hợp kiểu dữ liệu)
    • Match Expression ( so khớp biểu thức)
    • Null Safe operator
    • Enhanced Error Handling and Type System (Hệ thống phân loại và xử lý lỗi nâng cao)
    • Consistency (tính nhất quán)
  • Just In Time (JIT) Compiler

Named Arguments (Đối số được đặt tên)

Trong tính năng mới này, người dùng chỉ phải chỉ định các tham số bắt buộc và bỏ qua các tham số tùy chọn. Các arguments được tự ghi lại và không phụ thuộc vào trật tự sắp xếp.

Ví dụ về sự khác biệt giữa PHP 7.0 và 8.0

PHP 7PHP 8
htmlspecialchars($string, ENT_COMPATCT | ENT HTML401, ‘UTF-8’,false);htmlspecialchars($string,double encode: false);

Attributes (thuộc tính)

Người dùng hiện có thể sử dụng siêu dữ liệu có cấu trúc với native syntax của PHP, thay vì các chú thích của Tài liệu PHP.

PHP 7.0PHP 8.0
class Postscontroller{
/**
*
@Route(“api/posts/{id}”),methods={“GET”}
*/
public function get($id){
// todo
}
}
class PostsController{
#[Route(“api/posts/{id}”, ,methods: [“GET”])]
public function get($id){
// todo
}
}

Constructor property promotion (giới thiệu về cách khởi tạo đối tượng)

Có rút ngắn mã nguồn khi xác định và khởi tạo thuộc tính cho đối tượng.

Xem thêm: https://hocvietcode.com/mot-so-cai-tien-moi-cua-php-8/#Gioi_thieu_Constructor_Property

PHP 7.0PHP 8.0
class Point{
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0
){
$this->x = $x;
$this->y = $y;
$this->z = $z;
// todo
}
}
class Point{
public function __construct(
public float $x = 0,0,
public float $y = 0.0,
public float $z = 0.0
){
//todo
}
}

Union types ( kêt hợp kiểu dữ liệu)

Người dùng có thể sử dụng các khai báo kiểu kết hợp gốc được xác thực trong thời gian chạy, thay vì các chú thích Tài liệu PHP.

PHP 7PHP 8
class Number{
/** @var int|float */
private number;
/**
* @param float|int $number
*/
public function __construct($number){
$this->number = $number;
}
}

new Number(‘NaN’); // its work
class Number {
public function __construct(private int|float $number){
// to do
}
}

new Number(‘NaN’); // type error

Match Expression ( so khớp biểu thức)

Đối sánh biểu thức trong PHP 8.0 tương tự như chuyển đổi với các tính năng sau:

  • Đối sánh là một biểu thức, có nghĩa là kết quả của nó có thể được lưu trữ trong một biến hoặc nó có thể được trả về.
  • Các nhánh so khớp chỉ hỗ trợ các biểu thức một dòng và không yêu cầu câu lệnh break ; .
  • Đối sánh không so sánh chặt chẽ.
PHP 7PHP 8
<?php
switch(8.0){
    case ‘8.0’:
        $result = ‘8.0’;
        break;
        case 8.0;
        $result = ‘8.0 expected’;
        break;
}

echo $result; // 8.0
echo match(8.0){
    ‘8.0’ => ‘8.0’,
    8.0 => ‘8.0 expected’,
};
// 8.0 excepted

Null Safe operator

Người dùng có thể sử dụng một loạt (dây chuyền) các cuộc gọi với toán tử an toàn rỗng mới thay vì
viết mã cho các điều kiện kiểm tra null.

Toàn bộ quá trình thực hiện bị hủy bỏ khi việc xác định một phần tử trong chuỗi không thành công và sau đó, toàn bộ dây chuyền có giá trị null.

Xem thêm tại https://hocvietcode.com/mot-so-cai-tien-moi-cua-php-8/#Toan_tu_nullsafe

Enhanced Error Handling and Type System (Hệ thống phân loại và xử lý lỗi nâng cao)

Đã có nhiều thay đổi trong các loại hệ thống khác nhau và cải tiến xử lý lỗi như sau:

  • Kiểm tra kiểu chặt chẽ hơn cho các toán tử số học / bitwise so với phiên bản trước đó
  • Xác thực phương pháp tính trạng trừu tượng
  • Magic methods giờ đã có chữ ký chính xác (correct signatures).
  • Cảnh báo engine đã được phân loại lại
  • Method không tương thích gây ra lỗi nghiêm trọng
  • Kế thừa với private method
  • Mixed type
  • Static return type
  • Sử dụng các đối tượng Opaque thay vì tài nguyên cho OpenSSL, Gd, Curl,
    Phần mở rộng XML Writer, Sockets và XML

Consistency (tính nhất quán)

PHP 8.0 có kiểu lỗi consistency cho các function internal. Hầu hết các chức năng bên trong ném ra một ngoại lệ Lỗi khi không xác nhận được các tham số.

Just In Time (JIT) Compiler

Là một ngôn ngữ được giải mã hoặc thông dịch, PHP khi biên dịch, không chạy ngay lập tức tại thời điểm khởi chạy. Nó chạy trong thời gian thực (real-time). Trong các phiên bản trước của PHP, trong quá trình biên dịch, bất cứ khi nào mã PHP được chạy, trình thông dịch trước tiên phải thông dịch, sau đó biên dịch và cuối cùng là thực thi mã. Điều này được thực hiện lặp đi lặp lại cho mỗi yêu cầu, dẫn đến việc thực thi mã chậm và lãng phí tài nguyên CPU.
Vấn đề này hiện đã được khắc phục với sự ra đời của trình biên dịch Just In Time (JIT), trong PHP 8.0.

Trình biên dịch JIT cho phép người dùng biên dịch một chương trình thành mã máy ngay trước khi nó có thể được thực thi. Khi JIT bỏ qua giai đoạn biên dịch, nó cung cấp tính linh hoạt trong mã PHP và mang lại những cải tiến sâu rộng về mã thực thi, sử dụng bộ nhớ và hiệu suất. Tuy nhiên, những cải tiến này chỉ áp dụng cho các phép tính toán học hoặc số, chứ không phải các ứng dụng Web PHP thông thường. JIT được sử dụng rộng rãi trong các chương trình liên quan đến chu kỳ thực thi dài như kết xuất 3D, phân tích dữ liệu hoặc Trí tuệ nhân tạo.
PHP 8.0 giới thiệu hai công cụ biên dịch JIT, đó là Tracing JIT và Function JIT.

Tracing JIT là công cụ đảm bảo nhất trong số hai công cụ này. Trên các điểm chuẩn tổng hợp, nó có hiệu suất tốt hơn gấp ba lần. Ngoài ra, có hai lần cải tiến trên các ứng dụng chạy dài cụ thể.

Hiệu năng JIT

Bài tập

Làm bài quản lý sinh viên với các yêu cầu sau:

Bước 1: sử dụng php tạo bảng trong CSDL qlsv, bao gồm 2 bảng sau: 

  • users: id (tự tăng), username,password,fullname, email, phone ,avatar (varchar) (fullname và phone,email,avatar cho phép null)
  • students: id(tự tăng), name(varchar) ,birthday(datetime),gender(tinyint) ,class_id (int) (FK references class(id)).
  • Bảng class bao g ồm côt id(int),name(varchar)
  • Bảng subjects bao gồm côt  id(int),name(varchar)
  • Bảng students_subjects bao gồm cột id(int),student_id(int) - FK references student(id),subject_jd(int) FK references subjects(id)

Bước 2: Tạo 1 form đăng ký như sau:

Yêu cầu:

  • Username required, độ dài tối thiểu 3 ký tự, max 20 ký tự
  • Password required, độ dài tối thiểu 3 ký tự, max 20 ký tự
  • Pasword và confirm password cần được đáp ứng yêu cầu giống nhau
  • Phải check vào agree mới cho register
  • Bấm vào i already have a membership sẽ chuyển trang sang trang đăng nhập.
  • Khi Các yêu cầu không thỏa mãn, thông báo lỗi cho người dùng
  • Nếu yêu cầu thỏa mãn, Thêm một bản ghi mới vào bảng User

Bước 3: Tạo một form đăng nhập như sau:

Yêu cầu:

Form cần validate required cho trường username và password
Username có độ dài tối thiểu 3 ký tự
Password có độ dài tối thiểu 3 ký tự
Khi người dùng nhập liệu sai không đăng nhập được thông báo lỗi dưới chân input cho người dùng, validate cả tầng html và php, nếu so khớp với CSDL, chuyển trang sang trang qlsv.php

Bước 4: 

Trong file qlsv.php , kết nối csdl, làm các tính năng thêm sửa xóa sinh viên theo hình:

Bài viết liên quan:

Hướng dẫn sử dụng xdebug để gỡ lỗi PHP bằng visual studio code môi trường windows
Hướng dẫn cấu hình Extension live server tự động tải lại PHP khi cập nhật file trên visual studio code
Kỹ thuật AJAX trong PHP
Làm việc với JSON trong PHP
Chuyển hướng trình duyệt, download file bằng HTTP Header trong PHP
Một số cải tiến mới của PHP 8
Nhận dạng trình duyệt và nền tảng trong PHP
Từ khóa final, static, overloading và magic method trong PHP
Abstract Class (lớp trừu tượng) trong PHP
Interface trong hướng đối tượng PHP
Method (phương thức), public,private,protected, method overriding trong hướng đối tượng PHP
Iterable và iterator trong PHP

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×