PHP8. 0 giới thiệu các đối số được đặt tên. Đây là một phần mở rộng của cú pháp vị trí hiện tại. Đối số được đặt tên loại bỏ một số hạn chế. Nó cũng hiện đại hóa cách các phương thức được gọi với số lượng đối số tùy ý, với toán tử trải rộng. Hãy xem những gì đang xảy ra ở đó
Xem nhanh các tham số được đặt tên
Cho đến ngày 7 cuối cùng. x, PHP chỉ sử dụng các tham số vị trí. Đối số ở vị trí đầu tiên được gán cho tham số ở vị trí đầu tiên, trong chữ ký phương thức. Mọi đối số bị thiếu sau đó sẽ được điền bằng giá trị mặc định. Cuối cùng, các đối số không cần thiết bị loại bỏ hoặc một thông báo được đưa ra để báo hiệu rằng các tham số bị thiếu
Vấn đề phát sinh với các tham số tùy chọn. Đặc biệt khi có nhiều người trong số họ và tất cả họ đều độc lập. Các đối số vị trí áp đặt rằng tất cả các tham số được cung cấp trước khi sử dụng giá trị mặc định và do đó, có thể bị bỏ qua. Khi một tùy chọn phải được đặt và nó nằm ở cuối danh sách tham số, tất cả các giá trị trước đó phải được điền
1 cổ điển. Hãy lưu ý rằng chúng phân biệt chữ hoa chữ thường
Từ bây giờ, các đối số được xác định theo tên của chúng, không phải vị trí của chúng. Vì vậy, các giá trị có thể được gán cho đối số phù hợp và thứ tự gọi có thể khác với chữ ký của phương thức
Như bạn có thể thấy, tên của đối số là một loại tài liệu trong mã. Điều này làm cho đối số thứ 7 của setcookie[] trở nên rõ ràng. đó là
3 và chúng có tác dụng ngược lại. Trong một chữ ký,
3 với các giá trị băm trong mảng
1 trong tên chỉ mục, vì nó không cần thiết
Các đối số bổ sung được báo hiệu bằng Lỗi nghiêm trọng.
8
Tất cả những gì là cổ điển. Tiếp theo là mới
Băm đầy đủ
Băm khớp rất chặt chẽ với phương thức truyền đối số. Tất cả các tên là duy nhất trong chỉ mục băm, giống như các đối số của phương thức. Không có
3 thực hiện, khi nó được sử dụng trong chữ ký phương thức
8
Hiện có 2 sắc thái giữa các cuộc gọi. đầu tiên, đối số nhận được sẽ thay đổi hình dạng của nó tùy thuộc vào cú pháp gọi
Cuộc gọi đầu tiên là phiên bản mã hóa cứng. Khi nhận,
1 là một mảng, có một phần tử.
2. Điều này được mong đợi. Việc thêm đối số thứ ba vào lệnh gọi sẽ thêm giá trị này vào sau giá trị
2
Cuộc gọi thứ hai là phiên bản động vị trí. Khi nhận,
1 hiện là một mảng của mảng và các đối số thực tế nằm ở chỉ mục [0]. Điều này tương thích ngược với PHP 7. 2, cũng đang hành xử như vậy. Tuy nhiên, điều này có nghĩa là cách gọi một phương thức có thể ảnh hưởng đến định dạng của các đối số nhận được
Các đối số Variadic hiện được đặt tên
PHP8. 0 giới thiệu một thay đổi mới. mảng kết quả bây giờ cũng là một hàm băm. Nó không phải là một mảng, với một số nguyên là chỉ số. Nó là một hàm băm, trong đó tên của chỉ mục duy nhất là tên của tham số
0
Chỉ số
5 đã trở thành chỉ số
6. Chữ cái này là tên của đối số và nó không thay đổi theo cú pháp gọi. Lần này, nó là một sự thay đổi không tương thích ngược. mã tìm nạp giá trị đối số phải truy cập vào chỉ mục
6 chứ không phải
5
Một cách khắc phục vấn đề này là áp dụng array_values[] cho đối số đến, để quay trở lại hành vi trước đó. Nếu không, đối số có thể được hợp nhất bởi array_merge[] với các mảng khác và khóa sẽ di chuyển khắp ứng dụng. array_merge[] và một số hàm gốc PHP khác, giữ nguyên các khóa
Đối số được đặt tên và biến số
Các đối số được đặt tên là mới trong PHP 8. 0 và chúng đã ảnh hưởng đến mã của chúng tôi. Thay vì sử dụng các mảng tùy chọn, giờ đây có thể có tất cả chúng trong chữ ký phương thức và bỏ qua chúng khi cần. Đây chắc chắn là một cải tiến. Tính không tương thích ngược, như lập chỉ mục các đối số biến đổi, sẽ yêu cầu một số điều chỉnh
Đặt tên đối số có thể đọc được sẽ có tác động khác. Cho đến bây giờ, các tên đối số được giới hạn trong lĩnh vực của phương thức và chúng không có khả năng hiển thị bên ngoài. Với PHP8. 0, điều quan trọng là phải đặt tên có ý nghĩa cho các đối số, để chúng có thể đóng vai trò là tài liệu và dễ nhớ
Bạn có thể sẵn sàng cho PHP 8. 0, bằng cách chạy Exakat trên cơ sở mã của bạn. Dưới đây là một số đề nghị đọc