Các biến có thể lưu trữ các loại dữ liệu khác nhau. Trong PHP, PHP tự động chọn kiểu dữ liệu phù hợp cho biến
Thông thường, chúng ta cần lưu trữ các loại dữ liệu khác nhau trong các biến để thực hiện các tác vụ khác nhau
Có một số kiểu dữ liệu trong PHP
Hàm var_dump[]
Hàm var_dump[] kết xuất thông tin về một biến. Tầm quan trọng của hàm này là, nó xuất ra kiểu dữ liệu của biến với giá trị của nó. Nó cũng là một hàm đầu ra như echo[]
Chúng tôi luôn chạy qua những điều này và có thể dễ dàng hiểu điều gì sẽ xảy ra khi chúng tôi chuyển cho chúng một giá trị
function foo[]: null {}
function bar[]: false {}
4 hoặc function foo[]: null {}
function bar[]: false {}
5. Tuy nhiên, điều gì sẽ xảy ra khi điều kiện của câu lệnh function foo[]: null {}
function bar[]: false {}
6 là một đối tượng, một chuỗi hoặc một số?Sự thật/Sai là gì?
Các ngôn ngữ được gõ lỏng lẻo như PHP cho phép chúng tôi sử dụng bất kỳ loại biến nào như thể đó là một giá trị boolean trong các câu lệnh
function foo[]: null {}
function bar[]: false {}
6 của chúng tôi$valueString = 'hello';
if [$valueString] {
doSomething[];
}
Khi PHP cần đánh giá câu lệnh
function foo[]: null {}
function bar[]: false {}
6, nó sẽ chuyển đổi biến của chúng ta thành thứ gì đó có thể biểu diễn dưới dạng boolean. Lý tưởng nhất, đây sẽ là một function foo[]: null {}
function bar[]: false {}
4 hoặc function foo[]: null {}
function bar[]: false {}
5 nhưng trong PHP, nó sẽ chuyển đổi bất kỳ biến nào thành một thứ mà nó có thể biểu thị dưới dạng một trong hai giá trị đó. Đây là nơi “sự thật” và “sự giả dối” xuất hiện. Một biến không phải là function foo[]: null {}
function bar[]: false {}
4 hoặc function foo[]: null {}
function bar[]: false {}
5 có thể là true hoặc falseVài ví dụ
Thật may mắn cho chúng tôi, có một sự nhất quán logic với cách kiểu PHP sắp xếp các biến của chúng tôi thành true và false. Phần lớn logic là bất cứ thứ gì “trống rỗng” đều là giả và bất cứ thứ gì có giá trị đều là thật
PHP là ngôn ngữ được gõ yếu và các biến có thể thuộc bất kỳ loại nào. Mục đầu tiên đáng được đề cập là chuỗi NULL trong ví dụ trên. Biến NULL có nghĩa đen là "không có giá trị". Nói rằng biến có giá trị NULL cũng giống như nói rằng biến không có giá trị
Các biến có giá trị thường đại diện cho số, chuỗi hoặc tài nguyên. Các biến đại diện cho số được biểu thị bằng chuỗi chữ số, có hoặc không có dấu thập phân. Các số cũng có thể được viết bằng ký hiệu kỹ thuật trong đó số 13500 sẽ được viết là 1. 35e4, ký hiệu bát phân hoặc thập lục phân.
Số 0 ở đầu có nghĩa là số được viết bằng ký hiệu bát phân, trong khi tiền tố "0x" được sử dụng cho ký hiệu thập lục phân. Ví dụ: biểu thức $a=0100;
Giá trị Boolean
Ngoài các con số, hầu hết các ngôn ngữ lập trình đều nhận ra các giá trị Boolean và phân biệt giữa các câu lệnh TRUE và FALSE. Các quy ước trong PHP rất giống với các quy ước trong Perl hoặc C. Danh sách sau đây hiển thị các giá trị FALSE
� 0
� "0"
� 0. 0
� NULL
� mảng[]
� "" [chuỗi trống]
� The keyword "FALSE"
Mọi giá trị không phải FALSE đều là TRUE. Các toán tử logic thông thường được áp dụng và có quyền ưu tiên thông thường giống với các định nghĩa trong các ngôn ngữ khác. Điều đáng chú ý là trái ngược với SQL áp dụng logic bậc ba trong đó giá trị NULL không phải là TRUE cũng không phải FALSE, PHP vẫn TRUE với logic nhị phân cổ điển
Xem kho mã để biết các tập lệnh hoàn chỉnh
Đây là một đoạn trích từ cuốn sách Easy Oracle PHP. Bạn có thể nhận được nó với giá hơn 30% bằng cách mua trực tiếp từ nhà xuất bản và nhận các tập lệnh HTML-DB ngay lập tức từ kho mã
PHP8. 0 đã thêm hỗ trợ cho Các loại kết hợp, giúp có thể khai báo một loại dưới dạng kết hợp của hai hoặc nhiều loại. Nó cho phép
function foo[]: null {}
function bar[]: false {}
5 và Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 là các loại có thể cho Loại Liên minh, nhưng không cho phép sử dụng chúng làm loại độc lậpTrước PHP 8. 2, chỉ có thể sử dụng
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 và function foo[]: null {}
function bar[]: false {}
5 như một phần của Loại liên kếtfunction foo[]: string|null {}
function strpos[]: int|false {}
Cố gắng sử dụng loại
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 hoặc function foo[]: null {}
function bar[]: false {}
5 làm loại độc lập [i. e mà không phải là một phần của loại liên kết] dẫn đến lỗi nghiêm trọng trong thời gian biên dịch trong các phiên bản PHP PHP 8. 0 và PHP8. 1function foo[]: null {}
function bar[]: false {}
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
Trong PHP8. 2 trở lên, cho phép sử dụng
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 và function foo[]: null {}
function bar[]: false {}
5 làm loại độc lập. Đoạn mã dẫn đến lỗi nghiêm trọng ở trên không còn đưa ra bất kỳ lỗi nào trong PHP 8. 2 trở lên. Điều này làm cho hệ thống kiểu của PHP trở nên biểu cảm và đầy đủ hơn để có thể khai báo chính xác các kiểu trả về, tham số và thuộc tínhHơn nữa, PHP 8. 2 trở lên cho phép sử dụng Loại kết hợp với
function foo[]: null {}
function bar[]: false {}
8, điều này dẫn đến lỗi trong các phiên bản PHP cũ hơnCác hàm và phương thức PHP phải sử dụng nhận xét PHPDoc để cung cấp thông tin loại chính xác có thể trực tiếp khai báo loại trong chính hàm đó
class AnonUser extends User {
- /**
- * @return false
- */
- public function isAdmin[]: bool {
+ public function isAdmin[]: false {
return false;
}
}
Lưu ý rằng các hàm được khai báo với kiểu trả về
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 phải rõ ràng là Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
2, nếu không lệnh gọi hàm dẫn đến ngoại lệ Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
3. Các hàm không trả về giá trị một cách rõ ràng, do hoàn toàn không có câu lệnh Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 hoặc bằng cách bỏ qua giá trị trả về [Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
5] có thể tiếp tục sử dụng loại function foo[]: null {}
function bar[]: false {}
9 làm loại trả vềVí dụ sau đưa ra một ngoại lệ
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
3 vì lẽ ra nó phải được khai báo với kiểu function foo[]: null {}
function bar[]: false {}
9 thay vì kiểu trả về Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4function foo[]: string|null {}
function strpos[]: int|false {}
3____14Trừ khi
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 là kiểu trả về, khai báo hàm với kiểu trả về function foo[]: null {}
function bar[]: false {}
9 hoặc class AnonUser extends User {
- /**
- * @return false
- */
- public function isAdmin[]: bool {
+ public function isAdmin[]: false {
return false;
}
}
2 là cách tiếp cận phù hợp hơnNếu một loại được khai báo là
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4, thì nó không thể được đánh dấu là "không có giá trị" bằng cú pháp class AnonUser extends User {
- /**
- * @return false
- */
- public function isAdmin[]: bool {
+ public function isAdmin[]: false {
return false;
}
}
5, vì nó dẫn đến một khai báo loại dư thừa. PHP ném lỗi vào thời gian biên dịch nếu nó gặp lỗifunction foo[]: string|null {}
function strpos[]: int|false {}
8function foo[]: string|null {}
function strpos[]: int|false {}
9Thay đổi liên quan
- PHP8. 0. Các loại liên minh
- PHP8. 0. Cảnh báo chức năng nội bộ hiện ném ngoại lệ
3 vàFatal error: Null can not be used as a standalone type in .. on line ... Fatal error: False can not be used as a standalone type in .. on line ...
7class AnonUser extends User { - /** - * @return false - */ - public function isAdmin[]: bool { + public function isAdmin[]: false { return false; } }
- PHP8. 1. Các loại giao lộ
- PHP8. 1. loại
2class AnonUser extends User { - /** - * @return false - */ - public function isAdmin[]: bool { + public function isAdmin[]: false { return false; } }
- PHP8. 2.
9 loạiclass AnonUser extends User { - /** - * @return false - */ - public function isAdmin[]: bool { + public function isAdmin[]: false { return false; } }
Tác động tương thích ngược
Trước PHP 8. 2, không được phép sử dụng
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 và function foo[]: null {}
function bar[]: false {}
5 làm loại độc lập. PHP8. 2 trở lên cho phép chúng dưới dạng các loại độc lập và điều này sẽ không gây ra bất kỳ sự cố tương thích nào trong các phiên bản PHP cũ hơn