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 mới của PHP 8

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

  • 18-03-2023
  • Toanngo92
  • 1 Comment

Mục lục

  • Giới thiệu Constructor Property
  • Mảng bắt đầu với index âm
  • Lỗi kiểu nhất quán (type error) trong hàm dựng sẵn
  • Toán tử nullsafe
  • So sánh chuỗi và số trong PHP 8
  • Chuỗi số trong PHP 8
  • Dấu phẩy ở cuối tham số

Giới thiệu Constructor Property

Hiện tại, trong PHP, tất cả các thuộc tính cần thiết phải được lặp lại thường xuyên ít nhất tối thiểu bốn lần. Theo Yêu cầu nhận xét (RFC) của PHP 8, hàm constructor và định nghĩa tham số sẽ được hợp nhất, giúp khai báo tham số dễ dàng hơn nhiều.

Yêu cầu Nhận xét (RFO) là một tài liệu mô tả các thông số kỹ thuật cho một công nghệ và trở thành một tài liệu tiêu chuẩn.

Chỉ các tham số có tiền tố là các từ khóa private, public và được protected, được gọi là các promoted parameter mới có thể được xác định và hợp nhất với hàm tạo theo RFC.

Xét ví dụ khởi tạo trong PHP 7 sau:

<?php
class GlassSquare {
  public float $p;
  public float $q;
  public float $r;

  public function __construct(
    float $p = 0.0,
    float $q = 0.0,
    float $r = 0.0
  ) {
    $this->p = $p;
    $this->q = $q;
    $this->r = $r;
  }
}

Các thuộc tính được lặp lại bốn lần trong ví dụ như sau:

  • Trong quá trình khai báo thuộc tính
  • Trong các tham số hàm khởi tạo
  • Trong quá trình gán giá trị vào thuộc tính
  • Kiểu thuộc tính được lặp lại hai lần.

Trong PHP 8, cú pháp khai báo được cải thiện như sau:

class Square {
    public function __construct(
        public float $p = 0.0,
        public float $q = 0.0,
        public float $r = 0.0,
    ) {}
}

Như chúng ta thấy, cú pháp trong PHP 8 gọn gàng hơn rất nhiều.

Mảng bắt đầu với index âm

Với PHP 8, các mảng bắt đầu bằng chỉ mục âm sẽ thay đổi hành vi của chúng.

Nếu một mảng bắt đầu bằng chỉ số âm (start_index < 0), các chỉ số còn lại sẽ bắt đầu từ 0. Tuy nhiên khái niệm này đã deprecated, hiện tại khi đánh index âm, các index của mảng vẫn sẽ chạy tăng dần.

Hàm array_fill sử dụng để khởi tạo nhanh một mảng với index xác định và xác định luôn số phần tử của mảng.

Ví dụ:

<?php
$a = array_fill(-6, 5, true);
echo '<pre>';
var_dump ($a);
echo '</pre>';
// output
//array(5) {
//  [-6]=>
//  bool(true)
//  [-5]=>
//  bool(true)
//  [-4]=>
//  bool(true)
//  [-3]=>
//  bool(true)
//  [-2]=>
//  bool(true)
//}

Lỗi kiểu nhất quán (type error) trong hàm dựng sẵn

Khi một tham số có kiểu dữ liệu không hợp lệ được truyền vào, hành vi của hàm dựng sẵn và do người dùng nghĩa sẽ khác nhau. Các hàm dựng sẵn đưa ra cảnh báo và trả về null trong khi các hàm do người dùng định nghĩa đưa ra TypeError.

Với PHP 8, bất cứ khi nào có loại tham số không khớp, các API phân tích tham số bên trong sẽ luôn tạo ra ThrowError.

Cú pháp được sử dụng để truy xuất tên của một lớp là Foo\Bar::class.

Với PHP 8, cú pháp tương tự cũng được mở rộng cho các đối tượng. Do đó, việc truy xuất tên của lớp cho một đối tượng nhất định trở nên dễ dàng hơn nhiều.

Toán tử nullsafe

PHP 8 giới thiệu toán tử nullsafe ?->. Trong quá trình đánh giá, nếu một toán tử trong chuỗi được đánh giá là null, thì quá trình thực thi chuỗi sẽ dừng và kết quả là null, Chỉ khi toán tử đầu tiên không được đánh giá là null, toán tử thứ hai mới có thể được đánh giá, nếu không, kết quả sẽ được trả về dưới dạng null.

Ví dụ:

PHP 7PHP 8
$country = null;
if($session !==null){
    $user = $session->user;
    if($user !==null){
        $address = $user->getAddress();
    }
    if($address !==null){
        $country = $address->country;
    }
}
$country = $session?->user?->getAddress()?->country;

So sánh chuỗi và số trong PHP 8

Trong các phiên bản PHP cũ hơn, trong quá trình so sánh số và chuỗi, các chuỗi được chuyển đổi thành số và sau đó, so sánh được thực hiện giữa các số nguyên hoặc số thực.

PHP 8 đã thực hiện một thay đổi nhỏ ở đây, trong khi so sánh một chuỗi với một chuỗi số, hành vi hiện tại, nghĩa là, so sánh số vẫn được thực hiện. Tuy nhiên, so sánh chuỗi được thực hiện bằng cách chuyển đổi số thành chuỗi.

Chuỗi số trong PHP 8

Trong PHP, có ba loại chính cho các chuỗi chứa số, chúng như sau:

  • Chuỗi số: Là chuỗi chứa số và đứng trước là khoảng trắng.
  • Chuỗi số đứng đầu: Là chuỗi có các ký tự đầu tiên là chuỗi số và các ký tự sau đây không phải là số,
  • Chuỗi không phải là số: Các chuỗi không phải là chuỗi số cũng như chuỗi số ở đầu thuộc danh mục này.

PHP 8 kết hợp các chế độ chuỗi số khác nhau thành một khái niệm duy nhất. Các ký tự số sẽ có các số có cả khoảng trắng ở đầu và cuối. Bất kỳ loại chuỗi nào khác được coi là không phải là số và sẽ throwTypeError.

Dấu phẩy ở cuối tham số

Danh sách Dấu phẩy được thêm vào danh sách các mục trong các trường hợp khác nhau được gọi là Dấu phẩy ở cuối. Các dấu phẩy ở cuối này đã được giới thiệu trong danh sách cú pháp, trong PHP 7.2 và PHP 7.3 đã giới thiệu chúng trong các tình huống gọi hàm.

Phiên bản PHP 8 đã giới thiệu dấu phẩy ở cuối danh sách tham số với các phương thức, hàm và bao đóng.

Bài tập

Làm một bài shop bán hàng cơ bản với yêu cầu như sau:

1. Tạo CSDL với các bảng:

products (id,productName,catId,productDesc,brandName,price,image)

productcate (id,cateName)

Mối QH giữa product và product cate là 1-n

Làm tính năng thêm sửa xóa cho product theo giao diện 

2. Làm  Trang chủ giao diện như hình (sản phẩm lấy động từ CSDL xuống)

Có các tính năng giỏ hàng, mua hàng

Tạo tính năng trang chủ hiển thị danh sách sản phẩm, khi người dùng bấm nút add cart, thêm vào session để lưu giỏ hàng phục vụ quá trình thanh toán. sau khi người dùng thanh toán, thêm thanh toán và lưu nội dung thanh toán vào CSDL

 

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
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
Namespace trong hướng đối tượng PHP

1 Comments

  1. Pingback: Một số cải tiến của PHP version 8 - Web888 chia sẻ kiến thức lập trình, kinh doanh, mmo

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

3. THIẾT KẾ 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

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
×