Đó là một cuộc gọi gần, nhưng đối số được đặt tên — còn được gọi là tham số được đặt tên — được hỗ trợ trong PHP 8. Trong bài đăng này, tôi sẽ thảo luận về thông tin chi tiết của chúng, nhưng trước tiên hãy để tôi cho bạn thấy chúng trông như thế nào với một vài ví dụ trong tự nhiên Show
Đối số được đặt tên được sử dụng trên hàm PHP tích hợp
Một DTO sử dụng các thuộc tính được quảng cáo, cũng như các đối số được đặt tên
Các đối số được đặt tên cũng hỗ trợ trải rộng mảng Bạn có thể đoán nó từ các ví dụ. các đối số được đặt tên cho phép bạn chuyển dữ liệu đầu vào vào một hàm, dựa trên tên đối số của chúng thay vì thứ tự đối số Tôi cho rằng các đối số được đặt tên là một tính năng tuyệt vời sẽ có tác động đáng kể đến cuộc sống lập trình hàng ngày của tôi. Có lẽ bạn đang tự hỏi về các chi tiết mặc dù. Nếu bạn nhập sai tên, cú pháp trải rộng mảng đó sẽ ra sao? Đây là nơi quảng cáo sẽ đến. Tuy nhiên, thay vào đó, tôi muốn hướng bạn tới trang Nhà tài trợ GitHub của tôi. Nếu bạn là độc giả thường xuyên và nội dung của tôi đang giúp ích cho bạn, bạn có thể xem xét tài trợ một lần hoặc hàng tháng. Nếu bạn là một công ty đang tìm kiếm các vị trí đặt quảng cáo chuyên dụng trên blog này hoặc bản tin của tôi, bạn có thể gửi email cho tôi theo địa chỉ brendt@stitcher. io Tại sao các đối số được đặt tên?Giả sử tính năng này là một tính năng gây tranh cãi nhiều và có một số lập luận phản đối việc không thêm chúng. Tuy nhiên, tôi muốn nói rằng lợi ích của chúng vượt xa nỗi sợ về các vấn đề tương thích ngược hoặc API cồng kềnh. Theo cách tôi thấy, chúng sẽ cho phép chúng tôi viết mã sạch hơn và linh hoạt hơn Thứ nhất, các đối số được đặt tên cho phép bạn bỏ qua các giá trị mặc định. Hãy xem lại ví dụ về cookie
Chữ ký phương thức của nó thực sự là như sau
Trong ví dụ tôi đã trình bày, chúng tôi không cần đặt cookie 9, nhưng chúng tôi cần đặt thời gian hết hạn. Các đối số được đặt tên làm cho phương thức này gọi ngắn gọn hơn một chút
0 không có đối số được đặt tên
0 với các đối số được đặt tênBên cạnh việc bỏ qua các đối số có giá trị mặc định, còn có lợi ích là có sự rõ ràng về biến nào làm gì; . Bây giờ chúng ta có thể nói rằng rất nhiều đối số thường có mùi mã; Nhận thấy một tpyo? . Nếu bạn muốn cập nhật những gì đang diễn ra trên blog này, bạn có thể theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi. Đăng ký email Đối số được đặt tên theo chiều sâuVới những kiến thức cơ bản đã sẵn sàng, chúng ta hãy xem những đối số được đặt tên có thể và không thể làm gì Trước hết, các đối số được đặt tên có thể được kết hợp với các đối số không được đặt tên — còn được gọi là có thứ tự —. Trong trường hợp đó, các đối số được sắp xếp phải luôn đến trước Lấy ví dụ DTO của chúng tôi từ trước
Bạn có thể xây dựng nó như vậy
Tuy nhiên, có một đối số được sắp xếp sau một đối số được đặt tên sẽ gây ra lỗi
Tiếp theo, có thể sử dụng trải rộng mảng kết hợp với các đối số được đặt tên 0Tuy nhiên, nếu thiếu các mục bắt buộc trong mảng hoặc nếu có một khóa không được liệt kê dưới dạng đối số được đặt tên, thì sẽ xảy ra lỗi 1Có thể kết hợp các đối số có tên và có thứ tự trong một mảng đầu vào, nhưng chỉ khi các đối số có thứ tự tuân theo cùng một quy tắc như trước. họ phải đến trước 2Sự phát triển của NULL trong PHP Nếu bạn đang sử dụng các hàm biến đổi, các đối số được đặt tên sẽ được chuyển cùng với tên khóa của chúng vào mảng đối số biến đổi. Lấy ví dụ sau 3Trong trường hợp này, 2 trong 3 sẽ chứa dữ liệu sau 4Thuộc tính — còn được gọi là chú thích — cũng hỗ trợ các đối số được đặt tên 5Không thể có một biến làm tên đối số 6Và cuối cùng, các đối số được đặt tên sẽ giải quyết một cách thực tế với các thay đổi tên trong quá trình kế thừa. Lấy ví dụ này 7PHP sẽ âm thầm cho phép thay đổi tên của 4 thành 5 và 6 thành 7; 8Lỗi thời gian chạy trong trường hợp 8 là một phiên bản của 9Cách tiếp cận thực tế này đã được chọn để ngăn chặn sự thay đổi lớn khi tất cả các đối số kế thừa sẽ phải giữ nguyên tên. Có vẻ như là một giải pháp tốt cho tôi Đó là hầu hết để nói về các đối số được đặt tên. Nếu bạn muốn biết thêm một chút cốt truyện đằng sau một số quyết định thiết kế, tôi khuyên bạn nên đọc RFC Làm cách nào để chuyển mảng làm đối số trong PHP?Bạn có thể truyền một mảng làm đối số . Nó được sao chép theo giá trị (hoặc COW'd, về cơ bản có nghĩa giống với bạn), vì vậy bạn có thể array_pop() (và tương tự) tất cả những gì bạn thích trên đó và sẽ không ảnh hưởng đến bất kỳ thứ gì bên ngoài. hàm sendemail($id, $userid){ //. } sendemail(mảng('a', 'b', 'c'), 10);
Khi bạn chuyển một mảng làm đối số cho a?Trong trường hợp, khi một mảng (biến) được truyền dưới dạng đối số của hàm, thì nó sẽ truyền địa chỉ cơ sở của mảng . Địa chỉ cơ sở là vị trí của phần tử đầu tiên của mảng trong bộ nhớ. |