Hướng dẫn optional chaining php
I would like to omit checks for null in chained statements like Show
and use optional chaining instead. Is this possible or implemented in PHP? asked Sep 6, 2019 at 8:49
1 Not until PHP 8.0. This has been voted on and passed in the Nullsafe operator RFC. The syntax will be So the statement:
Could be rewritten to:
Or:
The Nullsafe operator works for both properties and methods. answered Jul 23, 2020 at 23:32
PaulPaul 6,2302 gold badges39 silver badges51 bronze badges 1 According to this article "The null coalescing operator ( introduced in PHP 7) is represented like this ?? used to check if the value is set or null, or in other words, if the value exists and not null, then it returns the first operand, otherwise, it returns the second operand." So you can easily do
EDIT: This only works for properties, not methods (as pointed out by "hackel" in the comments below)
James 4,5714 gold badges36 silver badges48 bronze badges answered Dec 23, 2019 at 6:59
Foued MOUSSIFoued MOUSSI 4,4133 gold badges16 silver badges35 bronze badges 5 In PHP versions less than 8, optional chaining isn't supported. You can emulate it for properties by using the error control operator (
Output:
Demo on 3v4l.org A better solution is to use the null coalescing operator as described in @FouedMOUSSI answer. As of PHP8 (released 2020-11-26) optional chaining is supported via the nullsafe operator (see @Paul answer or the posted duplicate). answered Sep 6, 2019 at 8:57
NickNick 131k21 gold badges49 silver badges84 bronze badges 0 As mentioned by @Paul the nullsafe is available in PHP 8. After reading this question today I just realized PHP 8 was released yesterday (2020-11-26) with nullsafe operators available :) So yes it is available in PHP now and I can't wait to use it. https://www.php.net/releases/8.0/en.php answered Nov 27, 2020 at 15:44
Lời mở đầuChắc hẳn, với những người đã và đang làm việc với Javascript đều không xa lạ với các toán tử số học, so sánh, logic và chuỗi,... Tuy nhiên, ngoài những toán tử cơ bản mà bạn vẫn thường hay sử dụng thì hôm nay mình sẽ đi sâu vào 2 toán tử mà mình thấy khá hay và có thể nhiều người vẫn còn chưa hiểu rõ về nó hoặc thậm chí chưa sử dụng bao giờ. Có khi đọc bài này xong mới nhận ra là bấy lâu nay quên không áp dụng vào trong code của bạn =)) Nào, cùng mình bắt đầu ngay và luôn nhé 1. Nullish coalescing operator (??)Cú pháp: Định nghĩaToán tử
Cách dùng
hoặc toán tử 3 ngôi:
So sánh với toán tử OR (||)Sự hiện diện của Các giá trị falsy trong Javascript
Có một sự khác biệt nhỏ, toán tử
Toán tử
Tổng hợp lại so sánh như sau
Độ ưu tiên của toán tử ??Toán tử
Ngược lại, nếu chúng ta bỏ qua các dấu ngoặc, vì
Sử dụng kết hợp ?? với && và ||JavaScript cấm sử dụng
Trình duyệt hỗ trợHiện tại thì hầu hết các trình duyệt đều đã hỗ trợ toán tử 2. Optional chaining operator (?.)Cú pháp: Định nghĩaTrong javascript, bạn thường sẽ cần truy xuất các key trong object. Một số trường hợp chúng ta sẽ truy xuất các key không hề tồn tại, như thế javascript sẽ báo lỗi và app lăn ra chết. Chúng ta có thể khắc phục nó bằng cách sử dụng optional chaining thay vì check hàng loạt các điều kiện tồn tại. Như vậy sẽ giúp code clean hơn rất nhiều. Mình sẽ đi vào từng trường hợp để hiểu rõ hơn về toán tử này: Optional chaining với object
Thông thường, nếu không sử dụng toán tử Optional chaining với thuộc tính của object
Nếu toán hạng bên trái của Optional chaining với biểu thứcBạn cũng có thể sử dụng toán tử optional chaining khi truy cập vào thuộc tính là biểu thức sử dụng dấu ngoặc vuông như trường hợp dưới đây:
Optional chaining với gọi hàmBạn có thể sử dụng nó trong trường hợp gọi một hàm chưa chắc đã tồn tại.
Trong trường hợp này, biểu thức sẽ ngay lập tức trả về Truy cập phần tử của mảng với optional chaining
Trong trường hợp bạn truy cập vào một mảng với index không tồn tại trong mảng đó thì
chương trình sẽ chỉ trả về Kết hợp với toán tử nullish coalescing ??Với những gì mình đã giới thiệu về cả 2 toán tử, liệu chúng ta có thể kết hợp chúng lại hay không? Câu trả lời là có, cùng xem qua 1 ví dụ sau:
Vậy là chúng ta vẫn có thể sử dụng Tóm lược về optional chainingNhư vậy cú pháp
Như chúng ta có thể thấy, tất cả chúng đều đơn giản và dễ sử dụng. Việc Tuy nhiên, chúng ta nên áp dụng một Trình duyệt hỗ trợHiện tại thì hầu hết các trình duyệt đều đã hỗ trợ toán tử Tổng kếtQua nội dung bài viết, chắc hẳn mọi người đã hiểu rõ hơn ý nghĩa và cách sử dụng của 2 toán tử trên rồi nhỉ . Việc sử dụng linh hoạt các toán tử trên sẽ giúp chúng ta giảm bớt đi thời gian thao tác với object, function và cũng khiến code clean hơn. Ngon lành như vậy mà vẫn không sử dụng thì còn muốn sử dụng cái gì nữa đây =))Ngoài 2 toán tử mà mình vừa kể đến thì Javascript vẫn còn rất nhiều các operators hay ho khác nữa, dành chút thời gian vào docs tìm hiểu để sử dụng triệt để chúng nhé Cảm ơn mọi người đã dành thời gian đọc bài, +1 upvote nếu bạn thấy nó hữu ích nhé Documentation: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators |